Qt 10进制和16进制转换的使用示例
作者:FreeLikeTheWind.
在项目开发中,如何进行进制转换,提供以下方法:
通过标准库std::stringstream进行10进制和16进制转换
10进制转换成16进制
#include <sstream> #include <string> int decimalNumber = 255; std::stringstream ss; ss << std::hex << decimalNumber; // 输出16进制数 std::string hexNumber = ss.str(); std::cout << "Decimal: " << decimalNumber << "\n"; std::cout << "Hexadecimal: " << hexNumber << "\n"; }
16进制转换成10进制
#include <sstream> #include <string> std::string hexNumber = "FF"; std::stringstream ss(hexNumber); int decimalNumber; ss >> std::hex >> decimalNumber; // 输入16进制数,输出10进制数 std::cout << "Hexadecimal: " << hexNumber << "\n"; std::cout << "Decimal: " << decimalNumber << "\n"; }
通过QString::number()和toInt()、setNumbe()等方法进行转换
10进制转换成16进制
fun1:QString::number()
number()函数是重载函数
static QString number(double, char f=‘g’, int prec=6);第一个参数是值,第二个参数指定数值格式,第三个参数精度
static QString number(int, int base=10);第一个参数是值,第二个参数是基准
int nDecValue = 255; QString strRes; strRes = QString::number(nDecValue, 16); qDebug().noquote() << "10进制转16进制:" << strRes;
输出结果
10进制转16进制: ff
fun2:QString::number().rightJustified()
rightJustified(int width, QChar fill = QLatin1Char(’ ‘), bool trunc = false)函数:右对齐,不足width,左填充fill字符
leftJustified(int width, QChar fill = QLatin1Char(’ '), bool trunc = false)函数:左对齐,不足width,右填充fill字符
int nDecValue = 10; QString strRes; strRes = QString::number(nDecValue, 16).rightJustified(2, '0'); qDebug().noquote() << "10进制转16进制:" << strRes;
输出结果
10进制转16进制: 0a
fun3:QString(“%1”).arg()
int nDecValue = 255; QString strRes; strRes = QString("%1").arg(nDecValue , 0, 16); qDebug().noquote() << "10进制转16进制:" << strRes;
输出结果
10进制转16进制: a
fun4:QByteArray::number()
int nNum = 255; QString strRes; strRes = QByteArray::number(nNum, 16); qDebug().noquote() << "10进制转16进制:" << strRes;
输出结果
10进制转16进制: ff
fun5:QString::setNumber()
int nNum = 255; QString strRes; strRes = strRes.setNum(nNum, 16); qDebug().noquote() << "10进制转16进制:" << strRes;
输出结果
10进制转16进制: ff
16进制转换成10进制
fun1:QString::toInt()
QString str = "0xff"; qDebug().noquote() << "16进制转10进制:" << str.toInt(nullptr, 16);
输出结果
16进制转10进制: 255
格式化输出
quint16 num = 0xff; qDebug().noquote() << "十进制输出: " << QString("%1").arg(num); // 不足四位补0 qDebug().noquote() << "16进制小写输出: " << QString("%1").arg(num, 4, 16, QLatin1Char('0')); // 不足四位补0 qDebug().noquote() << "16进制大写输出: " << QString("%1").arg(num, 4, 16, QLatin1Char('0')).toUpper(); // 格式化输出 qDebug().noquote() << "格式化十进制输出: " << QString().sprintf("%d", num); qDebug().noquote() << "格式化16进制小写输出: " << QString().sprintf("%04x", num); qDebug().noquote() << "格式化16进制大写输出: " << QString().sprintf("%04X", num);
到此这篇关于Qt 10进制和16进制转换的文章就介绍到这了,更多相关Qt 10进制和16进制转换内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!