3 回答

TA貢獻1836條經驗 獲得超3個贊
你說的十六進制是 類似“CA”之類的 文本 吧,
在Qt的幫助文檔中注意看這個函數:
int QString::toInt ( bool * ok = 0, int base = 10 ) const
注意其中的 ‘base’
QString str = "FF";
bool ok;
int hex = str.toInt(&ok, 16); // hex == 255, ok == true

TA貢獻1898條經驗 獲得超8個贊
類似“02e3a2f5d6”的字符串,可以用字符拆分的方式進行分解,可以分解到QByteArray對象中
給你一個拆分類似 "12 35 AB 25 CD"字符串的函數,自己再稍加改動就可以用了
QByteArray HEXStringToArr(QString hexstr)
{
QByteArray qrst;
hexstr=hexstr.trimmed();
hexstr=hexstr.replace("",",");
QStringList sl=hexstr.split(",");
foreach(QString s,sl)
{
if(!s.isEmpty())
qrst.append((char)s.toInt(0,16)&0xFF);
}
return qrst;
}

TA貢獻1804條經驗 獲得超8個贊
串口發送的數據是8位的,最大為255,就是FF,如果要發送大于255的數,必須變成幾個字節發送,例如要發送十進制2315,就要將數據拆分 data(0)=2315/256; data(1)=2315%256; 這樣就拆分開數據,再將數據發送出去。
添加回答
舉報