0

次のようにwindows.hヘッダーで定義されているタイプBYTEがあります。

    typedef unsigned char BYTE;

次に、データベースにいくつかのフィールドがあり、QStringとして取得して、QByteArrayに変換します。

現在私は持っています:

        QString str = "0x168de78"; //some info from the database

        QByteArray tempB = QByteArray::fromHex(str.toAscii().toHex());

        BYTE *sequence = (BYTE*)strdup(tempB.data());

この場合、「0x168de78」は、データベースから取得することを期待している情報のサンプルを表します。

後で使用できるように、QStringを文字通りBYTEに変換する必要があります。

シーケンスとtempB.data()の値を取得するようにアプリに指示すると、次のようなものが得られます。

0x867dc8 "0x168de78" 
0x867de0 "0x168de78" 
0x867df8 "0x168de78" 

したがって、tempB.data()は問題ありませんが、シーケンスは問題ありません。私は何が間違っているのですか?

4

1 に答える 1

1
QString str = "0x168de78"; //some info from the database

QByteArray tempB =  QByteArray::fromHex(str.toAscii());//or 
//QByteArray tempB =  str.toAscii().toHex();

BYTE *sequence = (BYTE*)strdup(tempB.data());

更新:uがSTLを使用できる場合

unsigned int value;   
std::stringstream ss;
ss << std::hex << "0x168de78";
ss >> x;
于 2012-12-13T12:45:59.210 に答える