如何转换像这样的字符串
string s = "00-11-22-33-44-55-66-77-88-99-00-11-22-3A-4A-5A";
到像这样的字节数组
byte[] b = new byte[] { 0x00, 0x11, 0x22, 0x33, 0x44, 0x55, 0x66, 0x77, 0x88, 0x99, 0x00, 0x11, 0x22, 0x3A, 0x4A, 0x5A };
答案 0 :(得分:4)
s
.Split('-')
.Select(part => byte.Parse(part, System.Globalization.NumberStyles.HexNumber))
.ToArray();
答案 1 :(得分:0)
首先,删除字符串中的所有破折号。
string str = "00-11-22-33-44-55-66-77-88-99-00-11-22-3A-4A-5A";
// remove all except hex compliant chars
Regex rgx = new Regex("[^a-fA-F0-9]");
// now do the stripping
str = rgx.Replace(str, "");
更好的剥离和检查字符串是否实际为十六进制可以在这里实现,但为此可以保持简单。
然后使用此功能
public static byte[] StringToByteArray(string hex) {
return Enumerable.Range(0, hex.Length)
.Where(x => x % 2 == 0)
.Select(x => Convert.ToByte(hex.Substring(x, 2), 16))
.ToArray();
}
然后
// actually do the converting
StringToByteArray(str);
答案 2 :(得分:0)
试试这个:
string s = "00-11-22-33-44-55-66-77-88-99-00-11-22-3A-4A-5A";
var strArray = s.Split('-');
var byteArr = (from item in strArray
select Byte.Parse(item, System.Globalization.NumberStyles.HexNumber)).ToArray();
答案 3 :(得分:-1)
执行以下步骤:使用' - '字符解析所有字符串并输出字符串数组中的所有子字符串,然后在数组中所有字符串的开头添加“Ox”。 下面的代码可以轻松解决您在c#中的问题。