从字符串转换为字节时出现system.byte[]错误c#

本文关键字:byte system 错误 转换 字符串 字节 | 更新日期: 2023-09-27 18:23:51

我想在C#中将字符串转换为Byte[],在前面主题的帮助下,我使用以下代码:string s = "0a"; System.Text.ASCIIEncoding encode = new System.Text.ASCIIEncoding(); byte[] b = encode.GetBytes(s); Console.WriteLine(b);

但当我运行此代码时,它只打印:"System.byte[]"

从字符串转换为字节时出现system.byte[]错误c#

我想我可能终于破译了你的问题。您是否试图将字符串的十六进制数字放入数组?

我假设您想要从字符串中获取2位十六进制值,并将每个批次转换为字节。如果没有,我和其他人一样迷失了方向请注意,我没有包含任何错误检查

byte[] data = new byte[s.Length/2];
for(int i = 0; i < s.Length/2; ++i)
{
    byte val = byte.Parse(s.Substring(i*2,2), System.Globalization.NumberStyles.HexNumber);
    data[i] = val;
}
foreach(byte bv in data)
{
    Console.WriteLine(bv.ToString("X"));    
}

如果要执行此Console.WriteLine(b),它将打印b的类型,即System.Byte[]。为了打印存储在byte[] b中的字符串,只需使用System.Text.ASCIIEncoding.GetString(byte[] b);

所以在您的情况下,encode.GetString(b);将获得您的字符串。

您可以使用BitConverter类检查:http://msdn.microsoft.com/en-us/library/3a733s97(v=vs.100).aspx?cs save lang=1&cs lang=csharp#code-snippet-2

 System.Text.ASCIIEncoding encode = new System.Text.ASCIIEncoding();
 byte[] b = encode.GetBytes(s);
 Console.WriteLine(BitConverter.ToString(b));

您的代码已经完成了将字符串转换为字节的技巧,如果您的查询是打印单个字节值,为什么不使用循环打印字节数组中的值:

foreach (byte bb in b)
{
   Console.Write(Convert.ToInt32(bb));
}

这是因为它返回了您正在键入的对象的类型。如果你想打印数组的内容,试试这个:

Arrays.toString(byteArray)