首页新闻找找看学习计划

string 转换成16进制byte[]

0
[已解决问题] 解决于 2012-11-06 17:20

例:string str="FE FE FE 68 AA AA AA AA AA AA 68 13 00 DF 16";

转换成byte[] bytes={0xFE,0xFE,0xFE,0x68,0xAA,.......,0x16};

C#
一坨黄色的主页 一坨黄色 | 初学一级 | 园豆:13
提问于:2012-05-18 09:52
< >
分享
最佳答案
0
public static byte[] StringToByteArray(string hex)
{
    hex = hex.Replace(" ", "");
    return Enumerable.Range(0, hex.Length)
                     .Where(x => x % 2 == 0)
                     .Select(x => Convert.ToByte(hex.Substring(x, 2), 16))
                     .ToArray();
}

这样得到的是:

如果要输入"oxFE"格式这样写:

String.Format("0x{0:X}", bytes[0])
奖励园豆:5
artwl | 专家六级 |园豆:16526 | 2012-05-18 10:35
其他回答(3)
0

你这里是什么规则呢,直接以空格分组然后添加ox么?

草根程序猿 | 园豆:129 (初学一级) | 2012-05-18 10:11
0

可以写个函数把str中的空格全部去掉,把16进制的字符串再转换成字节数组。这个我之前写过,不明白的话可以联系我

wvsy | 园豆:297 (菜鸟二级) | 2012-05-18 10:17
0

 string str = "FE FE FE 68 AA AA AA AA AA AA 68 13 00 DF 16";

(省略去空格算法)去空格得到 string str1= "FEFEFE68AAAAAAAAAAAA681300DF16";

private static byte[] HexToByte(string hexString)//字串符转换成16进制byte[]
        {
            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;
        }//返回的结果就是16进制的byte[]

一坨黄色 | 园豆:13 (初学一级) | 2012-05-18 11:11

请问 如果 str = "1",我要转换为byte[]  为0x01,str ="10"我是要转换为0x0A,而不是0x10,该如何写这个转换函数?

支持(0) 反对(0) hayvane | 园豆:200 (初学一级) | 2012-05-28 17:42

@hayvane: 那就可以直接convert.tobyte(str,16);

支持(0) 反对(0) 一坨黄色 | 园豆:13 (初学一级) | 2012-11-06 17:19
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册