1、从十六进制字符串转字节后,按字节使用时
QByteArray data = QByteArray::fromHex("cc94");
printf("%x %x\n",data.at(0),data.at(0)&0xff);//若超过127,会不一样
printf("%d %d\n",data.at(0),data.at(0)&0xff);
输出结果如下所示:
第一个字节若超过127,data.at(0)使用时会是负数;若要用正数用时需要&0xff
2、从十六进制字符串转字节
当十六进制字符串长度为奇数和偶数时,转换结果大不一样
QByteArray data = QByteArray::fromHex("1234567890");
for(int i=0;i<data.length();i++)
printf("%02x ",data.at(i)&0xff);
printf("\n");
data = QByteArray::fromHex("1234567890a");//最后多一个字符a,转换后大不一样
for(int i=0;i<data.length();i++)
printf("%02x ",data.at(i)&0xff);
printf("\n");
如上,输出结果如下所示:
十六进制字符串为奇数时,会在头部自动添加0,这样再2字符2字符的转换。