问一个十六进制字符串转byte数组的问题

.Net技术 码拜 10年前 (2015-07-11) 1348次浏览 0个评论
 

public static byte[] HexToByte(string hexString)
{
hexString = hexString.Replace(” “, “”);
if ((hexString.Length % 2) != 0)
hexString += ” “;
byte[] returnBytes = new byte[hexString.Length / 2];
for (int i = 0; i < returnBytes.Length; i++)
{
returnBytes[i] = Convert.ToByte(hexString.Substring(i * 2, 2), 16);
}
return returnBytes;
}
网上的代码一般都是这样。但是如果hexString的长度不是2的倍数,就要执行hexString += “ ”
但是Convert.ToByte(string, 16)处理带空格的字符串是会报错的啊,是无法识别的。
请问该怎么处理呢?平台是WIN7+VS2013

 
有点字符串样例好吧……
FFFFFFFF这样也是一个16进制字符串
FF也是16进制字符串
0xFF还是16进制……

20分

if ((hexString.Length % 2) != 0)
                hexString = "0"+hexString ;

为什么要在后面加空格?而不是前面加0呢?

 
F怎么看也是跟0F一样大才对
 
再重新找一个算法吧~
为什么要把“ ”空格去掉,歧视空格不是字符串么~

另外太复杂了~
看看别人的多简单

string类型转成byte[]:

byte[] byteArray = System.Text.Encoding.Default.GetBytes ( str );

byte[]转成string:

string str = System.Text.Encoding.Default.GetString ( byteArray );

20分

string input = "AFF"  ;
    int num = Convert.ToInt32(input, 16);
    byte[] bytes = new byte[input.Length / 2 + (input.Length % 2 == 0   0 : 1)];
    for (var i = bytes.Length - 1; i >= 0; i--)
    {
        bytes[i] = (byte)(num & byte.MaxValue);
        num = num >> 8;
    }

CodeBye 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明问一个十六进制字符串转byte数组的问题
喜欢 (0)
[1034331897@qq.com]
分享 (0)

文章评论已关闭!