甲方使用的后台要求“整型数据采用小端传输”,大部分数据是4字节十六进制,有一些是2字节十六进制。
关于大小端传输,简单来说可以这样认为。
内存中低地址存最低有效字节的形式为小端传输
内存中低地址存最高有效字节的形式为大端传输
例如一个4字节十六进制数"0x11223344",装入QByteArray中。
如果取出结果如下
buff[0] == 0x44;
buff[1] == 0x33;
buff[2] == 0x22;
buff[1] == 0x11;
这里的"0"就表示低地址,0x44表示最低有效位。
Qt中关于大小端数据也有封装好的接口,头文件qendian.h或者QtEndian。
主要记录一下进制之间的转换
![](https://i-blog.csdnimg.cn/blog_migrate/8f900a89c6347c561fdf2122f13be562.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/961ddebeb323a10fe0623af514929fc1.gif)
1 int c=254254; 2 QByteArray data((char*)&c,4); 3 QByteArray data0=intToByte(c); 4 QByteArray data1=QByteArray::fromHex(QString::number(c,16).toLatin1()); 5 qDebug()<<data.toHex()<<data.toHex().toInt(NULL,16)<<data.mid(0,1).toHex()<<data.mid(1,1).toHex()<<data.mid(2,1).toHex()<<data.mid(3,1).toHex(); 6 qDebug()<<data0.toHex()<<bytesToInt(data0); 7 qDebug()<<data1.toHex()<<data1.toHex().toInt(NULL,