2014-02-06 59 views
-1

創建低於QbyteArray,它包含一個十六進制值爲49的字節。 49是寫入存儲器的數據的一個字節,它不是49 ASCII字符串表示(其是2個字節)比較Qt中的原始十六進制值?

QByteArray data(QByteArray::fromHex("49")); 

在某些時候我填充data與附加字節。

data.append(QByteArray::fromHex("7656")) 

如何比較單個字節與十六進制值?

實施例:

這通過(49進製爲73十進制):

if (data.at(0) == 73) 
qDebug() << "True" 

但我需要與十六進制值的工作:

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

回答

2

在C/C++,一個十六進制整數字面量的前綴爲0x。所以:

if (data.at(0) == 0x49) 
    qDebug() << "true"; 
1

如果您在編譯時知道它,那麼你可以做0x49

如果你得到一個QString時,它與當時

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