qt-通信协议基础-QStirng转QByteArray-进阶操作

使用场景

对于普通的场景,没有什么进阶要求。当然如果,你依然想要处于一个小白阶段,或者代码初级阶段,那也不需要了解!!

这里写出来仅仅是给那些需要的,或者需要跨过小白阶段的程序员。

写代码,不是靠走马观花完成的,不是我们想到哪就走到哪,总想着凑合着用,那只会让未来的你自食其果。何为积屎成山,还是自己都不愿意搬的屎山。不留后路就是屎山。

前期我们讲过,QString转QByteArray,不需要处理字节序的问题。那么是否我们就只需要直接填写,就高枕无忧了?

看看进阶版本,思考思考吧。

进阶版本:可选字节序转换

c 复制代码
QByteArray doubleToQByteArray(double value, bool bigEndian) {
    union {
        double d;
        quint64 i;
    } converter;
    converter.d = value;
    QByteArray bytes;
    bytes.resize(8);
    if (bigEndian) {
        // 大端序:高位在前
        bytes[0] = (converter.i >> 56) & 0xFF;
        bytes[1] = (converter.i >> 48) & 0xFF;
        bytes[2] = (converter.i >> 40) & 0xFF;
        bytes[3] = (converter.i >> 32) & 0xFF;
        bytes[4] = (converter.i >> 24) & 0xFF;
        bytes[5] = (converter.i >> 16) & 0xFF;
        bytes[6] = (converter.i >> 8)  & 0xFF;
        bytes[7] = converter.i        & 0xFF;
    } else {
        // 小端序:低位在前
        bytes[7] = (converter.i >> 56) & 0xFF;
        bytes[6] = (converter.i >> 48) & 0xFF;
        bytes[5] = (converter.i >> 40) & 0xFF;
        bytes[4] = (converter.i >> 32) & 0xFF;
        bytes[3] = (converter.i >> 24) & 0xFF;
        bytes[2] = (converter.i >> 16) & 0xFF;
        bytes[1] = (converter.i >> 8)  & 0xFF;
        bytes[0] = converter.i        & 0xFF;
    }
    return bytes;
}

qt-union-联合体基础讲解

提问

优秀的代码,往往在于合理做出扩展性。你是否想过,让它变的大小自动调整,而不是设定大小!

相关推荐
mengzhi啊5 小时前
SerialPortItem对串口再封装一层,省去一些常用的步骤,不用每次都去写类
qt
用户83344239661417 小时前
从批量操作到任务中心,再到现场工作台:DeviceForge v2.10—v2.12 完整演进
qt
宛 禾19 小时前
Qt 控件入门:QLabel 从拖拽到对象树,一篇讲透
c++·qt·学习
打工仔折腾 AI1 天前
Qt网络编程实战:UDP、TCP到HTTP的落地经验与选型
网络·人工智能·后端·python·qt·udp·ai agent 实战
Lhan.zzZ1 天前
Linux + Qt/QML:解决 QtQuick.VirtualKeyboard.Plugins 模块加载失败与环境变量配置
linux·数据库·qt
誰能久伴不乏1 天前
QT工业上位机一次「指令静默丢失」的排查
qt·docker·github
扶尔魔ocy2 天前
【qt openGL入门笔记】OSG实现飞机模型在网格图上飞行并进行态势标绘(四)
qt·opengl·osg
橙橙笔记2 天前
QT安卓软件的制作
android·git·qt·软件
芦芭荞2 天前
QT使用xml模版生成word文档
xml·qt·word
mengzhi啊2 天前
qt把结构体数据存入json文件
qt·json