如何将字节数组转换为字符串?

时间:2012-03-22 18:49:52

标签: c# winforms unicode byte ascii

我有一个30字节数组的字节,但是当我使用BitConverter.ToString时,它会显示十六进制字符串。字节是 0x42007200650061006B0069006E00670041007700650073006F006D0065。 这也是Unicode。

这意味着B.r.e.a.k.i.n.g.A.w.e.s.o.m.e,但我不知道如何让它从十六进制转换为Unicode转换为ASCII。

2 个答案:

答案 0 :(得分:17)

您可以使用其中一个Encoding类 - 您需要知道这些字节的编码方式。

string val = Encoding.UTF8.GetString(myByteArray);

您显示的值看起来像Unicode编码,因此UTF8Unicode看起来像是好赌注。

答案 1 :(得分:4)

它看起来像是小端UTF-16,所以你想要Encoding.Unicode

string text = Encoding.Unicode.GetString(bytes);

您通常不应该假设编码是什么 - 它应该是您对数据的了解。对于其他编码,您显然使用不同的Encoding实例,但Encoding是用于文本二进制表示的正确类。

编辑:如评论中所述,您似乎从字节数组的 start (在这种情况下需要Encoding.BigEndianUnicode)或<来自< em>结束(在这种情况下只有Encoding.Unicode就可以了。)

(当涉及到另一种方式时,采用任意二进制数据并将其表示为文本,你应该使用hex或base64。这不是这种情况,但你应该知道它。)