(Qt)QByteArray自己的部分使用

本文介绍如何使用QDataStream将各种数据类型如int、qint16、qint64写入QByteArray中,并讨论了从QByteArray读取数据时可能遇到的问题及解决方法。特别关注了如何正确转换QByteArray中的字节为特定的数据类型。

一.将数据类型写入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);

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值