如何在.NET中将字符串转换为字节数组?

How do you convert a string to a byte array in .NET?

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

这应该很容易,但我的大脑抽筋了。


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

1
var result = System.Text.Encoding.Unicode.GetBytes(text);


首先,找出你想要的编码方式:你需要先了解一下Unicode。

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

最后,确定您是希望所有字节同时进行(这是最简单的工作方式——调用encoding.getbytes(string)一次,然后就完成了),还是需要将其分成块——在这种情况下,您需要使用encoding.getencoder,然后一次编码一点。编码器负责保持调用之间的状态,以防需要中断字符的一半。


您使用的是什么编码?康拉德已经把事情搞砸了,但是还有其他人在那里,你可能会得到错误的结果:

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

其中,XXX可以是:

1
2
3
4
5
6
7
ASCII
BigEndianUnicode
Default
Unicode
UTF32
UTF7
UTF8

这样地:

1
2
    string test ="text";
    byte[] arr = Encoding.UTF8.GetBytes(test);