我是靠谱客的博主 雪白睫毛膏,最近开发中收集的这篇文章主要介绍Qt中Modbus协议数据十六进制,有无符号十进制转换,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

前言

与传感器通信,常使用串口通信,协议为Modbus协议,很多时候串口收发的数据是十六进制的,且十进制还包括有符号(正数),无符号(负数)。而我们处理的数据是10进制的,这就需要我们对16进制进行转换,这篇博客主要是附上在Qt下的进制转换代码

  1. 16进制转换成正整数10进制
QString qnum="EA6B";
int num = qnum.toInt(&ok,16);
qDebug()<<num<<endl; //输出结果是60011
  1. 16进制转有符号10进制
QString qnum="EA6B";
int num = qnum.toInt(&ok,16);
if (!(qnum.at(0)>='0'&&qnum.at(0)<='7')){
num = num & 0x7FFF;
//清除符号位
num = ~num;
//反码
num = num & 0x7FFF;
//清除左边多余位
num = num + 1;
//加1
num = num*-1;
//符号位

}
qDebug()<<num<<endl;

最后

以上就是雪白睫毛膏为你收集整理的Qt中Modbus协议数据十六进制,有无符号十进制转换的全部内容,希望文章能够帮你解决Qt中Modbus协议数据十六进制,有无符号十进制转换所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(53)

评论列表共有 0 条评论

立即
投稿
返回
顶部