16进制数组转成10进制 qt_QT学习笔记——十进制与十六进制转换

——带符号十进制与两字节十六进制之间的转换

前言:两者转换一般用在串口通信的数据处理上,上位机接收到QByteArray类型的数据,转成QString类型,然后进行字符串截取拼接,获取数据。因此,下文两字节十六进制的数据类型是QString。十进制各种数据类型转换相对简单。下文带符号十进制数据类型是整型。

QByteArray byte = serial->readAll();

QString qstr = byte.toHex();

例子:0xFD67 和 -665

1、带符号十进制 转 两字节十六进制

int main(int argc, char *argv[]){

int num=-665;//正负皆可

QString qnum= QString::number(num,16).right(4);//裁剪字符串前面多余的f

std::cout<

return 0;

}

输出:FD67

2、两字节十六进制 转 带符号十进制

int main(int argc, char *argv[]){

int num;bool ok;

QString qnum = "FD67";

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; //符号位

}

std::cout<

return 0;

}

输出:-665

  • 1
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值