我有一个字符串需要在.NET中转换为等价的字节数组。
这应该很简单,但我现在有点脑抽。
您需要使用编码(System.Text.Encoding
)告诉.NET您期望的输出内容。例如,在UTF-16(=System.Text.Encoding.Unicode
)中:
var result = System.Text.Encoding.Unicode.GetBytes(text);
首先确定您需要哪种编码:您需要先了解一些有关Unicode的知识。
接下来确定对应的System.Text.Encoding
。我的.NET核心参考卡描述了大多数常见的编码方式,以及如何获取实例(例如通过Encoding
的静态属性或调用Encoding.GetEncoding
)。
最后,确定您是要一次性获取所有字节(这是最简单的方法 - 只需调用一次Encoding.GetBytes(string)即可完成),还是需要将其分成块 - 在这种情况下,您将需要使用Encoding.GetEncoder,然后逐位进行编码。编码器负责在调用之间保持状态,以防您需要在字符一半时中断,例如。
Buffer.BlockCopy
并假设这是他们想要的方法更好。 - Jon Skeet您正在使用哪种编码方式?Konrad 已经基本掌握了,但还有其他的编码方式存在,如果选择了错误的编码方式,可能会得到不良结果:
byte[] bytes = System.Text.Encoding.XXX.GetBytes(text)
其中XXX
可以是:
ASCII
BigEndianUnicode
Default
Unicode
UTF32
UTF7
UTF8
就像这样:
string test = "text";
byte[] arr = Encoding.UTF8.GetBytes(test);