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

作者&投稿:务卿 (若有异议请与网页底部的电邮联系)
C# 如何把字符串转换成字节数组C# 如何把字符串转换byte型(只转类型内容不变)~

/// /// 16进制字符串转换成字节数组 /// /// /// public static byte[] HexStringToByteArray(string s){ s = s.Replace(" ", ""); byte[] buffer = new byte[s.Length / 2]; for (int i = 0; i < s.Length; i += 2) { buffer[i / 2] = (byte)Convert.ToByte(s.Substring(i, 2), 16); } return buffer;} 字节数组就是字节数组,没有十六进制字节数组这种叫法,十六进制统一叫做十六进制字符串。

又是一个理解错误的,通讯里发送的都是byte,是不存在十六进制数据的,十六进制的全称叫十六进制字符串,也就是说比如F0,转换后就是一个byte字节,值为十进制240,只有当把收到的240转成十六进制字符串时才有F0
你要的数据只需要用下面方法调用,将得到的byte数组发送出去就行
public static byte[] HexStringToByteArray(string s){ s = s.Replace(" ", ""); byte[] buffer = new byte[s.Length / 2]; for (int i = 0; i < s.Length; i += 2) buffer[i / 2] = (byte)Convert.ToByte(s.Substring(i, 2), 16); return buffer;}对于你的示例来说就是string datapacket = "f02e00010200ff";byte[] array=HexStringToByteArray(datapacket);serialPort1.Write(array, 0, array.Length);

从你的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));

qq 2345345


定结县18613103630: c#中将字符串转换成4字节16进制数组,报“输入字符串格式不正确”.各位大侠帮看看问题出在哪里 -
沃房氨茶: 从你的000255转成[00][00][00][FF]来看,应该是先把字符串转换成10进制,然后转换16进制,再前面补0 对于你的报错:“输入字符串格式不正确”,明显出在 Convert.ToByte一句,代码基本问题都没测试号就加try...catch,隐藏问题去却没解决...

定结县18613103630: C# 十进制转为4位十六进制? -
沃房氨茶: C#有很多格式符,你可以这样: int i = 255; Console.WriteLine("{0:x8}", i); 这样就会输出25的8位(四个字节)十六进制的表示.如果你想转化成你上面的小端机的表示方式,你可以把这个8个数字两两分组,之后再反序输出就可以了哈.

定结县18613103630: “C#”如何把字符串转化为十六进制的ASCII码? -
沃房氨茶: 输入代码.十六进制批量转ASCII,代码如下: private void button1_Click(object sender,EventArgs e) { textBox2.Text= HexStringToASCII(textBox1.Text); } /// <summary> /// 将一条十六进制字符串转换为ASCII /// </summary> /// <param name="...

定结县18613103630: C#如何把数字转为16进制字节 -
沃房氨茶: 1、数字和字节之间互转 int num=12345; byte[] bytes=BitConverter.GetBytes(num);//将int32转换为字节数组 num=BitConverter.ToInt32(bytes,0);//将字节数组内容再转成int32类型 2、将字符串转为16进制字符,允许中文private string ...

定结县18613103630: C# 中怎样将String型的数据转换成十六进制 -
沃房氨茶: string x = Convert.ToString( Convert.ToInt32("01010101", 2),16); Console.WriteLine(x);

定结县18613103630: 怎么将C# 中textbox的字符串转为16进制 然后以16进制相加? -
沃房氨茶: 我想你搞错了,转16进制不是给每一个字符加上0x就表示转化为16进制,0x只是表示这个数为16进制表示法.byte[] b = Encoding.ASCII.GetBytes(TextBox1.Text);//按照指定编码将string编程字节数组 string result = string.Empty; for (int i = 0; i < b.Length; i++)//逐字节变为16进制字符 { result += Convert.ToString(b[i], 16); }

定结县18613103630: c#怎样将byte转为十六进制 -
沃房氨茶: 1. 字节数组转为 整型,需要调用 BitConvert的 ToInt方法2. 调用Convert.ToString(整型,进制数) 来转换为想要的进制数3. 一个小示例如下:using System;using System.Collections.Generic;using System.Linq;using System.Text;namespace ...

定结县18613103630: C#把float[]中的数转四个字节16进制并把高低位互换. -
沃房氨茶: #region 模型转化为字节 public static byte[] ModelToBytes(Object obj) { Int32 size = Marshal.SizeOf(obj); IntPtr buffer = Marshal.AllocHGlobal(size); try { Marshal.StructureToPtr(obj, buffer, false); Byte[] bytes = new Byte[size]; Marshal.Copy(buffer, ...

定结县18613103630: 请问c#中如何将十进制数的字符串转化成十六进制数的字符串? -
沃房氨茶: System.Convert.ToString(int value, int toBase); value : 32 位的有符号整数. toBase : 返回值的基数,必须是 2、8、10 或 16. 返回值 :以 toBase 为基数的 value 的 String 表示形式. ////////////////////////// e.g.string str1 = "10"; // 十进制数的字符串 string str2 = Convert.ToString(int.Parse(str1), 16);// output: a

定结县18613103630: c#八位二进制字节数组转四位十六进制字节数组怎么实现? -
沃房氨茶: Console.WriteLine( Convert.ToInt32("11111111", 2) .ToString("X4"));楼上说的晦涩难懂

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网