C# 字符串到字节数组(使用预设字符串格式)



我在 C# 中遇到了一个问题,并且在将多个十六进制值的字符串转换为字节 [] 时遇到问题。

string word = "xCDx01xEFxD7x30";

(x开始每个新值,所以我有:CD 01 EF D7 30)

这是我第一次在这里提问,所以如果您需要我提供任何额外的东西,请告诉我。

有关该项目的更多信息:

我需要能够同时更改两者

"apple""xCDx01xEFxD7x30"到字节数组。

对于我使用的普通字符串"苹果">

byte[] data = Encoding.ASCII.GetBytes(word);

这似乎不适用于我得到值"xCDx01xEFxD7x30"

63, 1, 63, 63, 48 

好的...您尝试直接"向下转换"/"向上转换"char<->byte(其中char是 C#char,长度为 16 位,字节长为 8 位)。

有多种方法可以做到这一点。最简单的(可能不是性能更高的)是使用iso-8859-1编码,将字节值 0-255 "映射"到 unicode 代码 0-255(并返回)。

Encoding enc = Encoding.GetEncoding("iso-8859-1");
string str = "apple";
byte[] bytes = enc.GetBytes(str);
string str2 = enc.GetString(bytes);

你甚至可以做一点 LINQ:

string str = "apple";
// This is "bad" if the string contains codepoints > 255
byte[] bytes = str.Select(x => (byte)x).ToArray();
// This is always safe, because by definition any value of a byte
// is a legal unicode character
string str2 = string.Concat(bytes.Select(x => (char)x));

最新更新