我有一个BYTE类型,它在windows.h标头中定义如下:

    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,以便以后使用。

如果我告诉应用程序给我sequence和tempB.data()的值,我将得到类似于以下内容:

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


所以tempB.data()没问题,但是序列却不行。我究竟做错了什么?

最佳答案

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());


更新:如果您可以使用STL

unsigned int value;
std::stringstream ss;
ss << std::hex << "0x168de78";
ss >> x;

08-16 18:03