C# 16进制转10进制 输入字符串的格式不正确

来源:百度知道 编辑:UC知道 时间:2024/05/30 01:55:04
string text = txt_encrypted.Text;
char[] delimiters = new char[] { ' ' };
string[] cip = text.Split(delimiters);

string xxx = "";
foreach (string x in cip)
{
int s = int.Parse(x.ToString(),
System.Globalization.NumberStyles.AllowHexSpecifier);
xxx += s.ToString() + " ";
}
MessageBox.Show(xxx);

txt_encrypted.Text 里面我输入的是 16进制的 码, 比如:
"A8B 412 887 A8B 412 ";空格隔开的~~

系统提示错误,输入字符串的格式不正确!!!

你多了个空格,你最后面的空格去掉,就OK了

十六进制应该以“0x”开头的,具体到你的问题上就是"A8B 412 887 A8B 412 "应该变成"0xA8B 0x412 0x887 0xA8B 0x412 "就对了

int.Parse (x , NumberStyles.HexNumber)

楼上回答不对 帮助文档中明确指出System.Globalization.NumberStyles.AllowHexSpecifier 指示数值字符串表示一个十六进制值。有效的十六进制值包括数字 0-9 和十六进制数字 A-F 与 a-f。十六进制值的左侧可以用零填充。使用此样式分析的字符串不允许以“0x”为前缀。

你的int.Parse( , )?????没怎么看懂,应该是Int16.Parse( , )吧
应该是你的string x中有问题,可能是有的x什么东西都没有就一个空格符,
既然是在测试,那么将每个x打印出来。
foreach (string x in cip)
{
MessageBox.Show(x);
string y=x.Trim();
if(y.Equals(String.Empty))
{
continue;
}
int s = Int16.Parse(y.ToString(),
System.Globalization.NumberStyles.AllowHexSpecifier);
xxx += s.ToString() + " ";
}

没怎么看懂