【发布时间】:2026-01-28 03:30:02
【问题描述】:
我有一个字符串,我需要将其转换为 .NET 中的等效字节数组。
这应该很容易,但我脑子抽筋了。
【问题讨论】:
我有一个字符串,我需要将其转换为 .NET 中的等效字节数组。
这应该很容易,但我脑子抽筋了。
【问题讨论】:
You need to use an encoding (System.Text.Encoding) 告诉 .NET 你期望的输出是什么。例如在UTF-16 (= System.Text.Encoding.Unicode):
var result = System.Text.Encoding.Unicode.GetBytes(text);
【讨论】:
首先确定你想要哪种编码:你需要先知道a bit about Unicode。
接下来找出对应的System.Text.Encoding。我的Core .NET refcard 描述了大多数常见的实例,以及如何获取实例(例如,通过Encoding 的静态属性或通过调用Encoding.GetEncoding。
最后,确定您是否需要同时获取所有字节(这是最简单的工作方式 - 调用一次 Encoding.GetBytes(string) 即可完成)还是需要将其分成块 - 在这种情况下,您我想使用Encoding.GetEncoder,然后一次编码一点。编码器负责保持调用之间的状态,以防您需要在字符中途中断。
【讨论】:
Buffer.BlockCopy 和假设这是他们想要的更好的方法。
您使用的是什么编码? 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);
【讨论】: