代码已用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进制数?谢谢!
xVal = "0000".append(xVal);
xVal = xVal.substring(xVal.length - 4);
谢谢,自己解决了,不过也是楼上启动了我,谢谢!
// 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'));
}
如果是 C++,你可以这么做。
WCHAR strw[16];
swprintf_s(strw, 16, L"%04X", ux);
这样如果你的 16 进制的字符串不足 4 个字符,左边前面就会补 0 补足 4 位。仅供参考。