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

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

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

71950 次浏览

您需要使用编码 (System.Text.Encoding)来告诉. NET 您期望的输出结果:

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

像这样:

    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

首先要弄清楚您想要哪种编码: 您首先需要知道 关于 Unicode 的一些知识

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

最后,弄清楚是否需要同时使用所有字节(这是最简单的工作方式——调用 编码. GetBytes (字符串)一次就完成了) ,或者是否需要将其分成几个块——在这种情况下,需要使用 编码,获取编码器,然后一次进行一点编码。编码器负责在调用之间保持状态,例如,如果您需要在字符的中间断开。