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

如何在.NET中将字符串转换为字节数组?,.net,string,bytearray,.net,String,Bytearray,我需要将一个字符串转换为.NET中的等效字节数组 这应该很容易,但是我的大脑抽筋了。(System.Text.Encoding)告诉.NET您期望的输出。例如,在: 像这样: string test = "text"; byte[] arr = Encoding.UTF8.GetBytes(test); 你用的是什么编码?康拉德的表现很差,但还有其他人,你可能会得到错误的结果: byte[] bytes = System.Text.Encoding.XXX.GetBytes(t

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

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

System.Text.Encoding
)告诉.NET您期望的输出。例如,在:

像这样:

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

你用的是什么编码?康拉德的表现很差,但还有其他人,你可能会得到错误的结果:

byte[] bytes = System.Text.Encoding.XXX.GetBytes(text)
其中,
XXX
可以是:

ASCII
BigEndianUnicode
Default
Unicode
UTF32
UTF7
UTF8

首先找出你想要的编码:你需要先知道

下一步,找出对应的。My描述了大多数常见的实例,以及如何获取实例(例如,通过
Encoding
的静态属性或调用


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

System.Text.Encoding中的编码比Unicode中的编码多得多:确保您理解w乔尔:因此我写了“例如”;-)但你的评论当然是有效的。:)试图帮助显示非UTF16编码的位置-我可能可以用更好的措辞。你能看看我的相关内容吗?@Mehrdad:你绝对能。编码定义了从字符串到字节数组的转换。压缩和加密是完全不同的事情。否则,这就好比说,当你想将图片保存为文件时,图像格式无关紧要——许多不同的图像格式都可以,但根据定义,必须有一种涉及其中。@Mehrdad:不,用户需要知道编码。仅仅因为UTF-16在某种意义上是.NET的自然编码并不意味着它就是他想要使用的编码。把数据写出来的目的是为了可以再次读取——这需要使用相同的编码。OP提到“等效字节数组”这一事实表明,他们甚至不知道编码的存在,如果要在文本和二进制表示之间转换,理解编码是至关重要的。我见过无数人因为不理解编码而无法正确保存信息。根据我的经验,教育他们了解这个主题比使用
Buffer.BlockCopy
并假设这是他们想要的要好得多。@Mehrdad:但稍后会有人解释字节。你说的没错,压缩/加密部分不需要关心,但无论以后如何将其转换回字符串,都绝对会关心。。。如果没有人去解释这些数据,那就没有什么意义了。因此,是的,您仍然需要选择一种编码,并确保其使用一致。您决定使用哪种编码是任意的,只要它可以对您的所有文本进行编码,尽管它会影响空间等。但任意与不相关并不相同。@Mehrdad:是的,绝对如此。就像要将图片保存到磁盘时必须选择图像格式一样。尽可能用这个比喻。字符串不是由字节组成的(从概念上讲),所以为了转换成字节,必须进行某种转换。。。这就是编码。
ASCII
BigEndianUnicode
Default
Unicode
UTF32
UTF7
UTF8