我正在尝试将字符串转换为字节数组。当我查看字节数组的各个元素时,我得到了意想不到的结果。 例如,当我查看第一个元素,即“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
答案 0 :(得分:4)
ASCII.GetBytes
返回字符的ASCII码。它会很乐意接受字符串"z{}"
。
我想你想将十六进制字符串转换为整数值。您需要Int32.Parse,NumberStyles
参数设置为NumberStyles.HexNumber
。
string s = "1F";
int val = Int32.Parse(s, System.Globalization.NumberStyles.HexNumber);
val
现在是31。
答案 1 :(得分:2)
小写字母f是102.大写字母F是70.请检查http://www.asciitable.com
当你说你期待15岁时,我的猜测是你在十六进制列中看到了F ......
答案 2 :(得分:2)
你是否期待15,因为你看过像asciitable.com这样的东西,看到HEX值'F'的十六进制十进制值是15?
'f'的十进制值是102(它在链接页面的第四列的一部分)。
答案 3 :(得分:0)
你的期望是错误的,你的代码工作正常,小写'f'的十进制值是102。