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

我有一个string,我需要在.NET中转换为等效的字节数组。

这应该是容易的,但我有一个脑筋抽筋。

你需要使用一个编码来告诉.NET你期望的输出。 例如,在UTF-16中:

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

首先计算出你想要的编码:首先需要了解一下Unicode 。

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

最后,计算一下你是否想要所有的字节(这是最简单的工作方式 – 调用Encoding.GetBytes(string)一次,你就完成了)还是你需要把它分成块 – 在这种情况下,我想要使​​用Encoding.GetEncoder ,然后一次编码。 例如,编码器负责保持呼叫之间的状态,以防万一您需要在字符中途中断。

你使用什么编码? 康拉德已经很不错了,但也有其他人,你可以得到错误的结果:

 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);