我有一个 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() 没问题,但 sequence 不行。我做错了什么?
最佳答案
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;
关于c++ - QString 到 windows BYTE,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13859982/