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