说明:
在自定义通信协议的时候需要用到十六进制。定义一个十六进制整形数组,并将该整形数组一个个
赋值给QByteArray,它会自动进行转换成字符类型。
例如
int array[]={0x20,0x35,0x45,0x68,0x88};
arr.resize(sizeof(array)/sizeof(array[1]));
for(int i = 0;i < (sizeof(array)/sizeof(array[1]));i++)
{
arr[i] = array[i];
qDebug() << array[i];
qDebug() << arr[i];
}
可以清楚看到已经变成ASCII字符。如何将字符类型转换成我想要的十六进制呢?我是这样做的:
QByteArray ret = arr.toHex();
不过这样的缺点就是空间扩大一倍,原先arr5个字节大小,ret变成10个字节大小。最终转换是一个int类型十六进制转化成两个QByteArray字节空间。array[0] =0x20 => ret[0] = '2',ret[1] = '0'.