3 回答

TA貢獻(xiàn)1836條經(jīng)驗(yàn) 獲得超3個(gè)贊
你說(shuō)的十六進(jìn)制是 類(lèi)似“CA”之類(lèi)的 文本 吧,
在Qt的幫助文檔中注意看這個(gè)函數(shù):
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貢獻(xiàn)1898條經(jīng)驗(yàn) 獲得超8個(gè)贊
類(lèi)似“02e3a2f5d6”的字符串,可以用字符拆分的方式進(jìn)行分解,可以分解到QByteArray對(duì)象中
給你一個(gè)拆分類(lèi)似 "12 35 AB 25 CD"字符串的函數(shù),自己再稍加改動(dòng)就可以用了
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貢獻(xiàn)1804條經(jīng)驗(yàn) 獲得超8個(gè)贊
串口發(fā)送的數(shù)據(jù)是8位的,最大為255,就是FF,如果要發(fā)送大于255的數(shù),必須變成幾個(gè)字節(jié)發(fā)送,例如要發(fā)送十進(jìn)制2315,就要將數(shù)據(jù)拆分 data(0)=2315/256; data(1)=2315%256; 這樣就拆分開(kāi)數(shù)據(jù),再將數(shù)據(jù)發(fā)送出去。
添加回答
舉報(bào)