本文介绍了转换字符串的byte []创建零字符的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
在此转换功能
公共静态的byte [] GetBytes会(字符串str)
{
字节[]字节=新的字节[str.Length *的sizeof(字符)];
System.Buffer.BlockCopy(str.ToCharArray(),0,字节,0,bytes.Length);
返回字节;
}字节[] =测试GetBytes会(ABC);
结果数组包含零字符
测试= 97,0,98,0,99,0]
而当我们转换的byte []返回的字符串,其结果是
字符串测试=A B C
我们如何使它所以它不会创建这些零
解决方案
首先让我们看一下你的code确实错了。 是16位(2字节)的.NET框架。当你写这意味着的sizeof(char)的
,它返回 2
。 str.Length
是 1
,所以实际上你的code将字节[]字节=新的字节[2]
是一样的字节[2]
。因此,当您使用方法,你居然复制 2
从源数组到目标数组字节。这意味着你的 GetBytes会()
方法的返回值字节[0] = 32
和字节[1 ] = 0
如果你的字符串是,
。
尝试使用来代替。
const string input = "Soner Gonul";
byte[] array = Encoding.ASCII.GetBytes(input);
foreach ( byte element in array )
{
Console.WriteLine("{0} = {1}", element, (char)element);
}
Output:
83 = S
111 = o
110 = n
101 = e
114 = r
32 =
71 = G
111 = o
110 = n
117 = u
108 = l
这篇关于转换字符串的byte []创建零字符的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!