提问人:Thanush Ganesh 提问时间:10/27/2022 最后编辑:kotatsuyakiThanush Ganesh 更新时间:10/27/2022 访问量:403
如何将包含十六进制值的QString转换为uint?
How to convert a QString containing a hex value to an uint?
问:
QString samp_buff[100];
QByteArray data;
uint8_t speed;
samp_buff[3] = data.toHex(); //I converted the QByteArray into a string
qDebug() << "read_every_data_"<< samp_buff[3];
speed = samp_buff[3].toUInt(); //Trying to convert the string to uint8_t
qDebug() << "Converted to UINT8" << speed;
你好!我成功地将值(数据)存储为字符串数组中的a,并且在转换为十六进制形式的to期间也成功了。Qbytearray
QString
samp_buff
QString
uint8_t
Data: "\x07" //QByteArray
read_every_data_ "07" //QString
Converted to UINT8 7 //Uint8_t
它对此工作正常,但是当这种情况发生时,问题就出现了。
Data: "\x0B" //QByteArray
read_every_data_ "0b" //QString
Converted to UINT8 0 //Uint8_t
每当十六进制字符串中包含字母时,转换结果就会变为零。
答:
2赞
kotatsuyaki
10/27/2022
#1
正如 QString::toUint
的文档所建议的那样,该函数的签名如下所示。
uint QString::toUInt(bool *ok = nullptr, int base = 10) const
第二个参数用于指定基数。要从十六进制字符串转换,请为其提供。base
16
speed = samp_buff[3].toUInt(nullptr, 16);
评论