比较Qt中的原始十六进制值?

比较Qt中的原始十六进制值?,qt,qt4,hex,Qt,Qt4,Hex,下面创建一个QbyteArray,它包含一个十六进制值为49的字节。49是写入内存的数据的一个字节,它不是49的ASCII字符串表示形式,49是2个字节 QByteArray data(QByteArray::fromHex("49")); 在某个时候,我用额外的字节填充数据 data.append(QByteArray::fromHex("7656")) 如何将单个字节与十六进制值进行比较 例如: 这是49个十六进制,是73个十进制: if (data.at(0) == 73) qDeb

下面创建一个QbyteArray,它包含一个十六进制值为49的字节。49是写入内存的数据的一个字节,它不是49的ASCII字符串表示形式,49是2个字节

QByteArray data(QByteArray::fromHex("49"));
在某个时候,我用额外的字节填充数据

data.append(QByteArray::fromHex("7656"))
如何将单个字节与十六进制值进行比较

例如:

这是49个十六进制,是73个十进制:

if (data.at(0) == 73) 
qDebug() << "True"
但我需要使用十六进制值:

if (data.at(0) == WHAT_HERE?("49")) 
qDebug() << "True"

在C/C++中,十六进制整数文本的前缀是0x。因此:


如果您在编译时知道它,那么您可以执行0x49

如果你得到一个QString来比较它,那么

QString test="47";
bool ok;
int result = test.toInt(&ok,16);
if(ok && data.at(0)==result){
    //they are equal
}
QString test="47";
bool ok;
int result = test.toInt(&ok,16);
if(ok && data.at(0)==result){
    //they are equal
}