一.将数据类型写入QByteArray,长度和数据类型长度一致,非常有用的功能
例子:将int值写入QByteArray中 使其也有和int值相同的数据类型,这时要借助QDataStream完成,比如:
int mode_value = 12354;
QByteArray mode_value_bytes;
QDataStream mode_value_stream(&mode_value_bytes, QIODevice::ReadWrite);
mode_value_stream<<mode_value;
这样子mode_value_bytes中就会有 4个字节保存的是mode_value;
二.遇到的小问题
用QDataStream 读取socket 直接>> 输出到数据结构 比如 qint16 qint64都没问题
但是读取qbytearray 用>>qint16 始终读不出
索性直接将qbytearray 截取然后转
qint16 cmd = his_byte_array.mid(0, 2).toHex().toInt(NULL, 16); //这里不知道为什么用short转不出
qint64 data_length = his_byte_array.mid(2, 8).toHex().toLong(NULL, 16);