【发布时间】:2012-12-20 08:25:24
【问题描述】:
在这个转换函数中
public static byte[] GetBytes(string str)
{
byte[] bytes = new byte[str.Length * sizeof(char)];
System.Buffer.BlockCopy(str.ToCharArray(), 0, bytes, 0, bytes.Length);
return bytes;
}
byte[] test = GetBytes("abc");
结果数组包含零个字符
test = [97, 0, 98, 0, 99, 0]
当我们将 byte[] 转换回字符串时,结果是
string test = "a b c "
我们如何使它不会产生那些零
【问题讨论】:
-
当您将字符复制到字节数组中时,您似乎故意创建了这些零。您想要哪种编码? ASCII? UTF-8?
-
ToCharArray,顾名思义,返回 char[]。一个 char 是 16 位,即 2 个字节。因此,即使对于简单的 ASCII 文本,您也会得到一个值为 0 的附加字节。
-
@strike_noir 看看我更新的答案。
标签: c# arrays string char byte