从字符串转换为字节时出现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[]"
我想我可能终于破译了你的问题。您是否试图将字符串的十六进制数字放入数组?
我假设您想要从字符串中获取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)