如何将包含十六进制值的QString转换为uint?

How to convert a QString containing a hex value to an uint?

提问人:Thanush Ganesh 提问时间:10/27/2022 最后编辑:kotatsuyakiThanush Ganesh 更新时间:10/27/2022 访问量:403

问:

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期间也成功了。QbytearrayQStringsamp_buffQStringuint8_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

每当十六进制字符串中包含字母时,转换结果就会变为零。

C++ uint8t qbyte数组

评论


答:

2赞 kotatsuyaki 10/27/2022 #1

正如 QString::toUint 的文档所建议的那样,该函数的签名如下所示。

uint QString::toUInt(bool *ok = nullptr, int base = 10) const

第二个参数用于指定基数。要从十六进制字符串转换,请为其提供。base16

speed = samp_buff[3].toUInt(nullptr, 16);