转换10进制
QString strHex = "0x01";
bool ok;
strHex.toInt(&ok, 16);
转换十六进制
//方法1、
int n1=this->ui->speed->text().toInt();
QString hex=QString("%1").arg(n1,4,16);//加上QLatin1Char('0'),不足补0
//方法2、
int n1=this->ui->speed->text().toInt();
QString a=QString::number(n1,16);
//方法3、
uchar speedBuf[]={0};
QString str =this->ui->speed->text();//获取发送的信息
QString hex = QString("%1").arg(str.toInt(), 4,16,QLatin1Char('0'));//不足补0
uchar u1 = uchar(hex.left(2).toInt(nullptr,16));//前两位
uchar u2 = uchar(hex.right(2).toInt(nullptr,16));//后两位
speedBuf[3]=u2;
16进制字符串转字节数组
static QByteArray HexStrToByteArray(QString str) {
QByteArray senddata;
int hexdata, lowhexdata;
int hexdatalen = 0;
int len = str.length();
senddata.resize(len / 2);
char lstr, hstr;
for (int i = 0; i < len; ) {
hstr = str[i].toLatin1();
if (hstr == ' ') {
i++;
continue;
}
i++;
if (i >= len) {
break;
}
lstr = str[i].toLatin1();
hexdata = ConvertHexChar(hstr);
lowhexdata = ConvertHexChar(lstr);
if ((hexdata == 16) || (lowhexdata == 16)) {
break;
} else {
hexdata = hexdata * 16 + lowhexdata;
}
i++;
senddata[hexdatalen] = (char)hexdata;
hexdatalen++;
}
senddata.resize(hexdatalen);
return senddata;
}
static char ConvertHexChar(char ch) {
if ((ch >= '0') && (ch <= '9')) {
return ch - 0x30;
} else if ((ch >= 'A') && (ch <= 'F')) {
return ch - 'A' + 10;
} else if ((ch >= 'a') && (ch <= 'f')) {
return ch - 'a' + 10;
} else {
return (-1);
}
}
字节数组转16进制字符串
static QString ByteArrayToHexStr(QByteArray data) {
QString temp = "";
QString hex = data.toHex();
for (int i = 0; i < hex.length(); i = i + 2) {
temp += hex.mid(i, 2) + " ";
}
return temp.trimmed().toUpper();
}
10进制字符串转10进制
static int StrDecimalToDecimal(QString strDecimal) {
bool ok;
return strDecimal.toInt(&ok, 10);
}
2进制字符串转10进制
static int StrBinToDecimal(QString strBin) {
bool ok;
return strBin.toInt(&ok, 2);
}
16进制字符串转2进制字符串
static QString StrHexToStrBin(QString strHex) {
uchar decimal = StrHexToDecimal(strHex);
QString bin = QString::number(decimal, 2);
uchar len = bin.length();
if (len < 8) {
for (int i = 0; i < 8 - len; i++) {
bin = "0" + bin;
}
}
return bin;
}
10进制转2进制字符串一个字节
static QString DecimalToStrBin1(int decimal) {
QString bin = QString::number(decimal, 2);
uchar len = bin.length();
if (len <= 8) {
for (int i = 0; i < 8 - len; i++) {
bin = "0" + bin;
}
}
return bin;
}
10进制转2进制字符串两个字节
static QString DecimalToStrBin2(int decimal) {
QString bin = QString::number(decimal, 2);
uchar len = bin.length();
if (len <= 16) {
for (int i = 0; i < 16 - len; i++) {
bin = "0" + bin;
}
}
return bin;
}
10进制转16进制字符串,补零.
static QString DecimalToStrHex(int decimal) {
QString temp = QString::number(decimal, 16);
if (temp.length() == 1) {
temp = "0" + temp;
}
return temp;
}
网友评论