<1>16进制字符串转byte数组
string s = "0A-0B-0C-FF";
string Hexstr = s.Replace("-", "");
byte[] b = new byte[Hexstr.Length / 2];
for (int k = 0; k < b.Length; k++)
{
b[k] = Convert.ToByte(Hexstr.Substring(k * 2, 2), 16);
}
<2>Byte数组转16进字符串
byte[] b = { 10, 11, 12, 255 };
string Hexstr= BitConverter.ToString(b,0);//有“-”间隔
string noSpace = Hexstr.Replace("-", "");//去掉“-”
<3>Int型转字节数组
int a1 = 12;
int a2 = 256;
byte[] b1 = BitConverter.GetBytes(a1);
byte[] b2 = BitConverter.GetBytes(a2);
byte为8位无符号数,Int默认为32位,转的时候先分配4字节空间,然后从低位到高位,按每8位的量往里放,256(10进制)=16个0+00000001+8个0(2进制),所以第八位对应的b2[0]=0,b2[1]=1…….
注: BitConverter.GetBytes();提供各种基础数据流与字节数组的转换,所以参数可以为各种数据类型.
<4>单个字节转int
byte[] b1 = { 10, 11, 12, 255 };
byte[] b2 = { 0x0a, 0x0b, 0x0c, 0xff };
int a1 = Convert.ToInt32(b1[0]);
int a2 = Convert.ToInt32(b2[0]);
这里可以得到一个重要信息,无论byte初始化时放的什么,在计算机内存中都自动转化为10进制。