c#中将字符串转换成4字节16进制数组,报“输入字符串格式不正确”。各位大侠帮看看问题出在哪里

//字符串转换成十六进制数组(4 bytes)
public static byte[] StringToHexBytes(string inputstring)
{
try
{
int inputnum = Convert.ToInt32(inputstring);
string hexstring = string.Format("{0:X8}", inputnum);
byte[] returnbytes = new byte[4];
for (int i = 0; i < returnbytes.Length; i++)
{
returnbytes[i] = Convert.ToByte(hexstring.Substring(i * 2, 2));
}
return returnbytes;
}
catch(Exception ex)
{
MessageBox.Show(ex.Message);
return null;
}
}

第1个回答  2011-06-25
从你的000255转成[00][00][00][FF]来看,应该是先把字符串转换成10进制,然后转换16进制,再前面补0
对于你的报错:“输入字符串格式不正确”,明显出在 Convert.ToByte一句,代码基本问题都没测试号就加try...catch,隐藏问题去却没解决问题。
Convert.ToByte这里找你的逻辑参数是诸如“6E”这种16进制形式的“字符串”,而非数值,这样的是没法转换的,或许你对数值类型的理解不够深入,Convert.ToByte所支持的字符串形式只有“00100100”这样的
解决方法:把那句改成
returnbytes[i] = Convert.ToByte(Convert.ToInt32(hexstring.Substring(i * 2, 2),16));

参考资料:http://msdn.microsoft.com/zh-cn/library/system.convert.tobyte.aspx

本回答被提问者采纳
第2个回答  2011-06-25
qq 2345345追问

如:输入字符串000255.返回[00][00][00][FF]

c#中将字符串转换成4字节16进制数组,报“输入字符串格式不正确”。各位...
从你的000255转成[00][00][00][FF]来看,应该是先把字符串转换成10进制,然后转换16进制,再前面补0 对于你的报错:“输入字符串格式不正确”,明显出在 Convert.ToByte一句,代码基本问题都没测试号就加try...catch,隐藏问题去却没解决问题。Convert.ToByte这里找你的逻辑参数是诸如“6E”这种16...

16进制和字符串之间的转换问题,求助!高分!在线等!
int rLen=0,len=str.GetLength();\/\/ 获取长度 比如str是0D 0A 12.。。中间有个空格 这是十六进制 char h,l;for(int i=0;i<len;){ h=str[i];if(h ==' '){ i++;continue;} i++;l=str[i];int t=HexChar(h);int t1=HexChar(l);if(t==16||t1==16)break;t=t*16+t...

如何C#中把字符串转换成日期
你转换为Date对象以后,他是包含时间的全部信息的,所以你如果想使用特定格式的,只需要对Date实例对象.ToString("格式")就可以了。。格式包括:yyyy-MM-dd HH:mm:ss:fff 你可以从中任意选取需要的部分,如月-日即为MM-dd 等等

C#中如何将一个字符串转化为变量,这个变量是已经定义的。
直接使用字符串作为变量名是不可行的。你可以使用if,或者switch代码块。if(str=="a5“){ system.console.writeline(a5);} else if(str=="a4"){ system.console.writeline(a4);} 例如这样。

Char* 转 double数组,就是有一个字符串例如"1.25,3,4.23,5",如何把它...
使用','分割字符串,将得到的子串使用atof()函数转换成小数,再存入数组 如果你需要程序!给我点时间,我写给你,期待回复

如何用按键精灵把中文字符串转换成16进制?
asc(),或者ascw()试试

c# 颠倒一个句子中的词的顺序
“叫”和“我”单独成为一个数组,然后倒排,如果你要对任意的这种字符串都转换过来,一种方法是将人名做成数据库,搜索数据库进行匹配,另外一种就是以谓语“叫”为分界线进行倒排。如果语法更加复杂那就牵涉到计算机自然语言处理的内容了,这属于人工智能的范畴之内了。

c# bytes型数据转换为抖了型如何转?
size大小表示你获取到的bytes型大小,float count = (float)size \/ 1024 \/ 1024 \/ 1024;然后输出Count就行!!!

我是菜鸟请问各位大侠c#控件常用的有哪些(具体点) 谢谢!
(4)Text属性:该属性是一个字符串属性,用来设置或返回在窗口标题栏中显示的文字。 (5)Width属性:用来获取或设置窗体的宽度。 (6)Height属性:用来获取或设置窗体的高度。 (7)Left属性:用来获取或设置窗体的左边缘的x坐标(以像素为单位)。 (8)Top属性:用来获取或设置窗体的上边缘的y坐标(以像素为单位)。 (9)...

C++ Builder中 现在是发送10进制的程序 我要把它改为发送16进制的...
需要更改字符为16进制的解释即可。例:十进制可以用方法 result=result*10+c-'0';\/\/将char型转换为十进制 那十六进制就是用:c=str[n+1];if(c>='0'&& c<='9')\/\/数字 { c = c -'0';} else if (c>='a'&& c<='f')\/\/16进制字符(小写){ c = c-'a' + 10;} else if ...

相似回答