2013-11-01 170 views
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 
+6

你甚至使用一个名为'string'的变量吗? – musefan

+2

你为什么期望它是15?如果有什么我会期待[它是70](http://www.asciitable.com/)。还请发布一个完整的可解决问题的例子,现在你的代码甚至不会编译。编辑:谢谢里克,102是'f',我检查了'F'。 –

+2

仅供参考,102是小写'f'的ASCII代码 – Rik

回答

4

ASCII.GetBytes返回字符的ASCII码。它会高兴地接受一个字符串"z{}"

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

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

val现在会是31

+0

谢谢,这正是我所需要的。有没有办法将它用于字符?到目前为止我没有运气。 – Ann

+0

您可以使用'.ToString()'方法将char转换为字符串。然后你可以解析它。或者对这16个值使用'switch'(猜测它是'0'到'F')。 –

2

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

当你说你期待15,我的猜测是,你看到˚F在十六进制列...

+0

+1链接解决整个讨论。 –

2

你是否期待15,因为你已经看过像asciitable.com的东西,并看到HEX值'F'的十六进制值是15?

'f'的十进制值是102(它是链接页面中第四列的一部分)。

0

你的期望是错的,你的代码工作正常,小写'f'的十进制值是102.