获取 UTF-16 字节而不调用 Encoding.Unicode.GetBytes
本文关键字:Encoding Unicode GetBytes 调用 UTF-16 字节 获取 | 更新日期: 2023-09-27 18:36:31
我想用 UTF-16 编码字符串中的字节填充缓冲区的一部分,而无需分配中间字节数组(即不调用Encoding.Unicode.GetBytes(str)
)
假设我知道字符串只包含ASCII
个字符,以下代码安全吗?
for (var i = 0; i < str.Length; i++)
{
var code = char.ConvertToUtf32(str, i);
var high = (byte) (code & 0xFF);
var low = (byte) ((code >> 8) & 0xFF);
//k is the offset where we insert bytes of the UTF-16 encoded string
buffer[i*2 + k] = high;
buffer[i*2 + k + 1] = low;
}
有一个重载的GetBytes
可以做你想要的。
Encoding.Unicode.GetBytes(str, 0, str.Length, buffer, k);
// or, if you need to do something more complicated inside the `for` loop
for (var i = 0; i < str.Length; i++)
{
Encoding.Unicode.GetBytes(str, i, 1, buffer, i*2 + k);
}