2

我正在尝试将字符串转换为字节数组。当我查看字节数组的各个元素时,我得到了意想不到的结果。例如,当我查看第一个元素“F”时,我希望它转换为 15,但我得到的是 102。这里有错误吗?

 Console.WriteLine("string[0] = " + string[0]);
 Byte[] data = Encoding.ASCII.GetBytes(string);
 Console.WriteLine("data[0] = " + data[0]);

 string[0] = f
 data[0] = 102
4

4 回答 4

4

ASCII.GetBytes将返回字符的 ASCII 码。它会很乐意接受一个字符串"z{}"

我猜您想将十六进制字符串转换为整数值。为此,您需要Int32.ParseNumberStyles参数设置为NumberStyles.HexNumber.

string s = "1F";
int val = Int32.Parse(s, System.Globalization.NumberStyles.HexNumber);

val现在是 31 岁。

于 2013-11-01T15:39:46.457 回答
2

小写 f 为 102。大写 F 为 70。请查看http://www.asciitable.com

当你说你期待 15 时,我猜你在十六进制列中看到了 F ......

于 2013-11-01T15:40:13.833 回答
2

您是否期望 15 是因为您查看过类似 asciitable.com 的内容并看到十六进制值“F”的十六进制十进制值为 15?

'f' 的十进制值为 102(它位于链接页面的第四列下方)。

于 2013-11-01T15:40:40.000 回答
0

您的期望是错误的,您的代码运行良好,小写“f”的十进制值为 102。

于 2013-11-01T15:58:20.537 回答