74

我有一个字符串,需要将其转换为 .NET 中的等效字节数组。

这应该很容易,但我有脑抽筋。

4

4 回答 4

99

您需要使用编码( System.Text.Encoding) 来告诉 .NET 您期望的输出是什么。例如,在UTF-16 (= System.Text.Encoding.Unicode)中:

var result = System.Text.Encoding.Unicode.GetBytes(text);
于 2008-10-27T21:11:37.823 回答
41

首先确定您想要哪种编码:您需要先了解一些关于 Unicode 的知识。

接下来找出System.Text.Encoding对应的。我的Core .NET refcard描述了大多数常见的,以及如何获取实例(例如,通过静态属性Encoding或调用Encoding.GetEncoding.

最后,确定您是否需要一次获得所有字节(这是最简单的工作方式 - 调用一次Encoding.GetBytes(string)就完成了)或者是否需要将其分成块 - 在这种情况下,您我想使用Encoding.GetEncoder然后一次编码一点。例如,编码器负责保持调用之间的状态,以防您需要在字符中途中断。

于 2008-10-27T21:33:07.063 回答
20

您使用的是什么编码?康拉德已经搞定了,但是还有其他的,你可能会用错误的结果得到愚蠢的结果:

byte[] bytes = System.Text.Encoding.XXX.GetBytes(text)

XXX可以在哪里:

ASCII
BigEndianUnicode
Default
Unicode
UTF32
UTF7
UTF8
于 2008-10-27T21:29:12.313 回答
8

像这样:

    string test = "text";
    byte[] arr = Encoding.UTF8.GetBytes(test);
于 2008-10-27T21:11:44.673 回答