10进制和16进制转换
- 通过标准库std::stringstream进行10进制和16进制转换
- 10进制转换成16进制
- 16进制转换成10进制
- 通过QString::number()和toInt()、setNumbe()等方法进行转换
- 10进制转换成16进制
- 16进制转换成10进制
- 格式化输出
在项目开发中,如何进行进制转换,提供以下方法:
通过标准库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);