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函数也可实现功能

猜你喜欢

转载自blog.csdn.net/wyf826459/article/details/80098499