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

时间:2014-09-21 10:56:15

标签: c#

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

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

5 个答案:

答案 0 :(得分:0)

如果您要执行此操作Console.WriteLine(b),则会打印b System.Byte[]的类型。 要打印存储在byte[] b中的字符串,只需使用System.Text.ASCIIEncoding.GetString(byte[] b);

即可

所以在你的情况下,encode.GetString(b);会得到你的字符串。

答案 1 :(得分:0)

您可以使用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));

答案 2 :(得分:0)

我想我可能最终破译了你的问题。您是否尝试将字符串的十六进制数字转换为数组?

我假设您想从字符串中获取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"));    
}

答案 3 :(得分:0)

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

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

答案 4 :(得分:-1)

那是因为它返回了您正在键入的对象的类型。如果要打印数组的内容,请尝试以下操作:

Arrays.toString(byteArray)