繁体   English   中英

字符串到相同的字节数组

[英]String to Same Byte Array

如何转换这样的字符串

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 };
s
.Split('-')
.Select(part => byte.Parse(part, System.Globalization.NumberStyles.HexNumber))
.ToArray();

首先,删除字符串中的所有破折号。

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

尝试这个:

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();

执行以下步骤:使用' - '字符解析所有字符串并输出字符串数组中的所有子字符串,然后在数组中所有字符串的开头添加“Ox”。 下面的代码可以轻松解决您在c#中的问题。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM