C 语言

关注公众号 jb51net

关闭
首页 > 软件编程 > C 语言 > Qt 10进制和16进制转换

Qt 10进制和16进制转换的使用示例

作者:FreeLikeTheWind.

在编程过程中,处理16进制字符串与10进制数字之间的转换是很常见的需求,本文主要介绍了Qt 10进制和16进制转换的使用示例,具有一定的参考价值,感兴趣的可以了解一下

在项目开发中,如何进行进制转换,提供以下方法:

通过标准库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进制转换内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

您可能感兴趣的文章:
阅读全文