C++ QString到windows字节

C++ QString到windows字节,c++,qt,byte,typedef,C++,Qt,Byte,Typedef,我有一个类型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,它在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逐字转换为一个字节,以便以后使用它

如果我告诉应用程序给我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;
无符号整数值;
std::stringstream-ss;
ssx;

BYTE*sequence=新字节[400];-这是内存泄漏,因为strdup将分配一个新字符串。你为什么需要数据的副本?你到底想做什么?您打算如何使用“序列”?你真的想把“str”转换成32位整数吗?@Neagogegab Thgank我纠正了那部分代码。@Pete字符串是从指纹读取器中提取的细节信息。库中用于提取、匹配和验证的函数都依赖于字节。我需要收集所有细节的样本,将它们加载到内存中,然后将新创建的细节模板与加载到内存中的每个模板进行匹配。我测试了这两种方法,没有一种有效。现在我在控制台上用第一个方法得到这个:0x16c49e0“hÞx”,第二个方法得到这个:0x145a168“307831363864653738”,你能演示一下吗?您是否正在尝试将十六进制字符串转换为字节序列,字节1应为0x78,字节2=0xDE?嗯,我只是认为可以直接进行转换,而不需要任何其他实用程序,显然不是。谢谢您的回答,我尝试了STL方法,它工作得非常好。非常感谢。