网络传输数据是需要保证字节序的正确,才能保证传输数据的准确,网络字节序一般是大端字节序。qt提供了以下两种方法来将本地字节序转换为网络字节序:
方法一,使用qt提供的字节序转换函数
T | qFromBigEndian(const uchar * src) |
T | qFromBigEndian(T src) |
T | qFromLittleEndian(const uchar * src) |
T | qFromLittleEndian(T src) |
void | qToBigEndian(T src, uchar * dest) |
T | qToBigEndian(T src) |
void | qToLittleEndian(T src, uchar * dest) |
T | qToLittleEndian(T src) |
quint16 src = 8823;
QByteArray byte_arry;
uchar temp[2];
qToBigEndian<quint16>(src, temp);
byte_array.append((char*)temp,2);
方法二,使用QDataStream来读写QByteArray, QDataStream 可以设置字节序
int i = 8823;
QDataStream data_stream(&byte_array, QIODevice::WriteOnly);
data_stream.setByteOrder(QDataStream::BigEndian);
data_stream<<i;