首页 新闻 会员 周边 捐助

求10进制转换四位16进制思路

0
悬赏园豆:5 [已解决问题] 解决于 2024-06-29 08:47

代码已用qt写出来,其它语言大同小异
int ux =120;
QString xVal = QString::number(ux, 16);//得到十六进制数(字符串方式表达)
QString str = "01030005";
str.append(xVal);

得出结果是:
xVal :78
str :0103000578

现问题是我数据位要用四位16进制表示,即78要用 0078 表示后再添加进 str 字符串中,但第一行的数值是动态变化的,有可能是1200 。这样16进制数就是4B0 ;str应为:0103000504B0 才对。
所以 str = "01030005"; 不能预先在后面添加两个"00" 。现求解,转为16进制数后,怎样动态根据16进制是2位还是3位还是4位,而自动补0 ,补够4位16进制数?谢谢!

tea2007的主页 tea2007 | 初学一级 | 园豆:7
提问于:2024-06-28 17:27
< >
分享
最佳答案
0

xVal = "0000".append(xVal);
xVal = xVal.substring(xVal.length - 4);

收获园豆:2
hankerstudio | 菜鸟二级 |园豆:208 | 2024-06-28 17:38
其他回答(3)
0
收获园豆:3
www378660084 | 园豆:1143 (小虾三级) | 2024-06-28 19:20
0

谢谢,自己解决了,不过也是楼上启动了我,谢谢!
// 10进制转16进制;
void CoalUtils::int2Hex(int data,QString hexData)
{
hexData = QString::number(data,16);
}

// 10进制转16进制左则补0
void CoalUtils::int2Hex4Pad(int data,QString hexData)
{
hexData = QString("%1").arg(data, 4, 16, QLatin1Char('0'));

}
// 10进制转16进制左则补0-2位长度
void CoalUtils::int2Hex2Len(int data,QString hexData)
{
hexData = QString("%1").arg(data, 2, 16, QLatin1Char('0'));

}

tea2007 | 园豆:7 (初学一级) | 2024-06-29 08:47
0

如果是 C++,你可以这么做。
WCHAR strw[16];
swprintf_s(strw, 16, L"%04X", ux);
这样如果你的 16 进制的字符串不足 4 个字符,左边前面就会补 0 补足 4 位。仅供参考。

hoodlum1980 | 园豆:573 (小虾三级) | 2024-09-28 15:52
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册