c# 将字符串转换成 2位的16进制数组通过串口进行发送

stringdatapacket="f02e00010200ff";//字符串转换成2位的16进制数组例:f02e00010200ffserialPort1.WriteL... string datapacket = "f02e00010200ff"; //字符串
转换成 2位的16进制数组 例:f0 2e 00 01 02 00 ff

serialPort1.WriteLine(str); 发送

要真实例子,将字符串转换成,2位的16进制数组。通过串口进行发送
展开
 我来答
syht2000
高粉答主

2014-12-08 · 关注我不会让你失望
知道大有可为答主
回答量:3万
采纳率:79%
帮助的人:1.4亿
展开全部

又是一个理解错误的,通讯里发送的都是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);
追问
非常感谢。你给的答案是对的。
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式