代码改变世界

把16进制字符转换成byte数组

2013-03-25 08:18  左眼微笑右眼泪  阅读(2711)  评论(0)    收藏  举报

      在计算机里,平时常用的编码一般用的是16进制的字符串并不是二进制字符串,二个16进制的数刚好可以表示一个字节,十六进制使用起来更简短,换算的时候一位16进制数可以顶4位2进制数。而在我们写程序的时候,用到的一般是字节数组。它们之间是怎样转换的呢?下面介绍一下它们相互转换的方法。

16进制字符串转换成Byte数组

public static byte[] HexStringToByte(string hexString)
 {
     char[] charList = hexString.ToCharArray();
     byte[] resultList = new byte[charList.Length / 2];
 
     int byteCount = 0;
 
     for (int i = 0; i < charList.Length; i += 2)
     {
         //一个byte相当于两个16进制的数
         byte b = 0x00;
         b |= Convert.ToByte("0x0" + charList[i], 16);
         b <<= 4;//移位操作,左移4位
         b |= Convert.ToByte("0x0" + charList[i + 1],16);
         resultList[byteCount] = b;
         byteCount++;
     }
 
     return resultList;
 }

Byte数组转换成16进制字符串

public string ByteToString(byte[] byteList)
{
    StringBuilder sbResult = new StringBuilder();
    foreach (byte oneByte in byteList)
    {
        string tempStr=String.Format("{0:X2} ", oneByte);
        sbResult.Append(tempStr);
    }
    return sbResult.ToString() ;
}