1.十六进制转2进制
1.1高位为0的话不显示
string dddd = Convert.ToString(revdata[0], 2);//8A -- "10001010"
1.2方法实现
/// <summary>
////// </summary>
/// <param name="hexString">十六进制数</param>
/// <returns>bitLenth为返回几位字符设置(0-8)</returns>
public static string HexString2BinString(string hexString, int bitLenth)
{
try
{
if (hexString.Contains("0x"))
{
hexString = hexString.Replace("0x", "");
}
string result = string.Empty;
string tempFormat = "{0:d" + bitLenth.ToString() + "}";
foreach (char c in hexString)
{
int v = Convert.ToInt32(c.ToString(), 16);
int v2 = int.Parse(Convert.ToString(v, 2));
// 去掉格式串中的空格,即可去掉每个4位二进制数之间的空格,
//result += string.Format("{0:d4} ", v2);
result += string.Format(tempFormat, v2);
}
return result;
}
catch (Exception ex)
{
Console.WriteLine(ex.Message);
throw;
}
}
1.3byte To int[]把每一位存入int数组
public static int[] byteTo2(byte b)
{
int[] dataint = new int[8];
dataint[7] = ((b & 128) == 128 ? 1 : 0);
dataint[6] = ((b & 64) == 64 ? 1 : 0);
dataint[5] = ((b & 32) == 32 ? 1 : 0);
dataint[4] = ((b & 16) == 16 ? 1 : 0);
dataint[3] = ((b & 8) == 8 ? 1 : 0);
dataint[2] = ((b & 4) == 4 ? 1 : 0);
dataint[1] = ((b & 2) == 2 ? 1 : 0);
dataint[0] = ((b & 1) == 1 ? 1 : 0);
return dataint;
}
1.4 byte to 2string byte转为8位2进制字符串
public static string byteTo2string(byte b)
{
string[] dataint = new string[8];
dataint[7] = ((b & 128) == 128 ? 1 : 0).ToString();
dataint[6] = ((b & 64) == 64 ? 1 : 0).ToString();
dataint[5] = ((b & 32) == 32 ? 1 : 0).ToString();
dataint[4] = ((b & 16) == 16 ? 1 : 0).ToString();
dataint[3] = ((b & 8) == 8 ? 1 : 0).ToString();
dataint[2] = ((b & 4) == 4 ? 1 : 0).ToString();
dataint[1] = ((b & 2) == 2 ? 1 : 0).ToString();
dataint[0] = ((b & 1) == 1 ? 1 : 0).ToString();
return dataint[7] + dataint[6] + dataint[5] + dataint[4] + dataint[3] + dataint[2] + dataint[1] + dataint[0];
}
1.5 2进制转16进制String
string rgb10 = string.Format("{0:x}", Convert.ToInt32(二进制数, 2));
1.6 String16进制转byte
byte ddd = Convert.ToByte(rgb10, 16);