Qt中int型转化为16进制后形成QString型时,int型数据为负需要转化为其补码时的操作

Qt的的的中封装了内部函数可以直接将INT型转化为16进制,字符串表示

      int suanz = 10000;       
      QString str = QString("%1").arg(suanz,4,16,QLatin1Char('0'));

执行完此操作后suanz变为了QString型,将str输出发现其为“2780”,输出正确

该函数

QString QString :: arg(int a,int fieldWidth = 0,int base = 10,QChar fillChar = QLatin1Char(''))const

中几个参数一个表示待转换的数据,fieldwidth表示转化后STR的长度,基部表示转化的进制数,可以为默认的10进制,也可以为16进制,8进制,2进制等,最后表示空余位置所补的字符。

但是该函数在运行过程中有一个问题,就是如果INT型数据为负(-10000),其长度不能按照fieldwidth输出:


但是观察发现其最后4为为-10000的补码输出,故在原函数后面进行处理,取其后4位作为输出,问题解决

QString("%1").arg(suanz,4,16,QLatin1Char('0')).right(4);

当然也可以计算出要转换的数据的补码对应的值再使用ARG函数也可实现功能

  • 1
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值