c# – 将字符串转换为byte []创建零字符

前端之家收集整理的这篇文章主要介绍了c# – 将字符串转换为byte []创建零字符前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
在这个转换函数
public static byte[] GetBytes(string str)
{
    byte[] bytes = new byte[str.Length * sizeof(char)];
    System.Buffer.BlockCopy(str.tocharArray(),bytes,bytes.Length);
    return bytes;
}

byte[] test = GetBytes("abc");

结果数组包含零个字符

test = [97,98,99,0]

当我们将byte []转换成字符串,结果是

string test = "a b c "

我们如何使它不会创建这些零

解决方法

首先让我们来看看你的代码错了什么 char是.NET框架中的16位(2字节).这意味着当你写sizeof(char)时,它返回2. str.Length是1,所以实际上你的代码将是byte [] bytes = new byte [2]是相同的字节[2].因此,当您使用 Buffer.BlockCopy()方法时,实际上将2个字节从源数组复制到目标数组.这意味着如果您的字符串为“”,您的GetBytes()方法返回字节[0] = 32,字节[1] = 0.

尝试使用Encoding.ASCII.GetBytes().

When overridden in a derived class,encodes all the characters in the
specified string into a sequence of bytes.

const string input = "Soner Gonul";

byte[] array = Encoding.ASCII.GetBytes(input);

foreach ( byte element in array )
{
     Console.WriteLine("{0} = {1}",element,(char)element);
}

输出

83 = S
111 = o
110 = n
101 = e
114 = r
32 =
71 = G
111 = o
110 = n
117 = u
108 = l
原文链接:https://www.f2er.com/csharp/95107.html

猜你在找的C#相关文章