字符串到相同的字节数组

时间:2014-03-16 12:15:11

标签: c# string bytearray

如何转换像这样的字符串

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 };

4 个答案:

答案 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#中的问题。