我尝试过以下操作,但它会返回一个奇怪的字符串:
Encoding.Default.GetString(buffer);
这是我的字节数组。我想将其转换为"8.31.99.141"
。
答案 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);
当然这是假设你想要每个字节的字符串表示。