字节数组到字符串不起作用

时间:2014-03-17 20:10:42

标签: c#

我尝试过以下操作,但它会返回一个奇怪的字符串:

Encoding.Default.GetString(buffer);

这是我的字节数组。我想将其转换为"8.31.99.141"

enter image description here

4 个答案:

答案 0 :(得分:4)

这似乎是一种误解。字节的值不直接与字符串的字符表示相关。也就是说字节8不一定是字符串中的"8"。在字节和字符之间进行转换的行为称为Encoding

您可以自己测试一些编码:

var testString = "my test string";
var bytes = Encoding.Default.GetBytes(testString);
var confirmString = Encoding.Default.GetString(bytes);

要直接以字符串形式输出字节值,请使用:

var result = string.Join(".", bytes);

这将隐式调用字节上的.ToString(),它将字节值作为字符串返回。 请注意,这与编码有很大不同。

答案 1 :(得分:3)

您似乎需要String.Join

string result = String.Join(".", lol);

答案 2 :(得分:0)

String.Join(".", buffer.ToList().Select(i=>i.ToString()));

答案 3 :(得分:0)

如果您的缓冲区长度可能不同:

var result = string.Join(".", buffer);

如果长度总是固定为4(例如,对于IP地址),这会更好地恕我直言:

var result = string.Format("{0}.{1}.{2}.{3}", buffer);

当然这是假设你想要每个字节的字符串表示。