首页 > 其他分享 >Qt QByteArray中存储的字节顺序转换

Qt QByteArray中存储的字节顺序转换

时间:2024-03-29 15:12:06浏览次数:14  
标签:顺序 QByteArray Qt value 转换 data 字节

  在 QByteArray 中,可以使用 Qt 的函数来实现字节顺序的转换。具体而言,可以使用 qFromBigEndian 和 qFromLittleEndian 函数将大端和小端字节顺序的数据转换为主机字节顺序的数据。同样地,可以使用 qToBigEndian 和 qToLittleEndian 函数将主机字节顺序的数据转换为大端和小端字节顺序的数据。

  例如,如果要将一个 uint32_t 类型的值从网络字节顺序(即大端字节顺序)转换为主机字节顺序,则可以使用以下代码:

1 QByteArray data; // 假设 data 包含一个 uint32_t 类型的值
2 uint32_t value = qFromBigEndian<quint32>(data.constData());

  这里使用了模板函数 qFromBigEndian 来解析从 QByteArray 中读取到的大端数据,并将其转换为主机字节顺序。对于其他类型和不同的字节顺序,只需要相应地更改参数即可。

  类似地,如果要将一个 uint16_t 类型的值从主机字节顺序转换为小端字节顺序,并写入 QByteArray 中,则可以使用以下代码:

1 uint16_t value = 0x1234; // 假设 value 是一个 uint16_t 类型的值
2 QByteArray data(sizeof(value), Qt::Uninitialized);
3 qToLittleEndian<quint16>(value, data.data());

  这里先创建了一个长度等于 sizeof(value) 的 QByteArray,然后使用模板函数 qToLittleEndian 将 value 转换为小端字节顺序,并将结果写入到 QByteArray 中。

标签:顺序,QByteArray,Qt,value,转换,data,字节
From: https://www.cnblogs.com/ybqjymy/p/18103899

相关文章

  • Qt 大小端转换
    大端模式和小端模式是计算机中经常涉及到的两种字节序,也有大端对齐、小端对齐、大尾、小尾等叫法。一、起源说起这两种模式,就不得不提一下大端(Big-endian)和小端(Little-endian)这两个英文上的起源。“endian”一词来源于乔纳森·斯威夫特的小说格列佛游记。Lilli......
  • QT 自定义插件问题 error: LNK2001: 无法解析的外部符号
    为了重复利用已有的代码,我使用自定义插件进行开发。当每个插件独立开发时没有遇到问题,但是当插件B引用了插件A时就会在编译时报错error:LNK2001:无法解析的外部符号。例如,先定义一个插件ColorPicker,用于颜色选取。关键代码如下:classQDESIGNER_WIDGET_EXPORTColorPicker:......
  • Modbus通讯协议中的四种字节顺序
    国内设备基本上是ABCD顺序,国外设备基本上是BADC顺序。低位优先字节交换。使用两个寄存器。使用IEEE754规范,如显示不正常可进行字节顺序交换位置即可。如下:FloatBig-endian字节顺序:ABCDFloatLittle-endian字节顺序:DCBAFloatBig-endianbyteswap......
  • Siemens 西门子 PLC Modbus写入float字节排列
    写保存寄存器功能码16示意:在西门子PLC中,实数,float,的保存方式遵循“高字节低地址,低字节高地址”的方式。假设使用16功能码向PLC的40005写入一个float,先利用BitConverter.GetBytes(f)得到要写的float的byte[]A。根据PLC中的存储方式,要想获得正确的float,在字40005的低......
  • Qt职业之路--成为一名卓越的Qt开发者
    本文翻译自:QtasaCareer–BecomingAStellarQtDeveloper本系列文章中,我们将分享多位Qt从业者的职业发展故事。今天,我要采访的是MikeTrahearn,他是一名资深软件工程师,也是2022年的QtChampion,现居住在澳大利亚昆士兰州阳光明媚的黄金海岸。问:你好,Mike!跟我们介绍一......
  • Qt自定义插件写Excel表格
    网上找到一个开源的Qt插件,下载下来,生成头文件和库文件,可以不依赖电脑是否安装Excel软件,是否有Excel驱动,可以直接输出excel文档https://github.com/dbzhang800/QtXlsxWriter/tree/master/src/xlsx#include"CopyAllFileThread.h"#include<QFileInfo>#include"LocalDb.h"#inc......
  • java实现字节数组转int(采用IEEE 754标准)
    /***字节数组转int*采用IEEE754标准**@parambytes*@returnfloat*/publicintbytesToInt(byte[]bytes){//获取字节数组转化成的2进制字符串StringbinaryStr=bytesToBinaryStr(bytes);//符号位......
  • Qt5.14.2 无所不能的Qt数据库操作之旅
    身为程序员,数据库无疑是我们最为亲密无间的好伙伴。但如何高效地操作数据库,却一直是一个令人颇感棘手的难题。不过,没关系,我们的Qt大神们早已为此开辟出一条华丽绝伦的大道,就让我带你一览他们的绝世数据库操作艺术吧!一、查询驱动,方能驱车万里在对数据库开展操作之前,我......
  • Qt5.14.2论Qt大神如何华丽操控计算机系统
    身为一名程序员,难免要与计算机系统打交道。而要想高效地和系统沟通、指挥它为我们工作,最好的办法莫过于拥有一个强大的跨平台开发框架了。今天,就让我们一同领略Qt大神如何在此领域内驰骋自如,优雅地操控系统完成各种任务吧!第一弹:潜力无限,Qt大神从获取信息开始作为系统......
  • QT数据类型和容器用法
    Qt库提供了基于通用模板的容器类,这些类可用于存储指定类型的数据项,Qt中这些容器类的设计比STL容器更轻,更安全且更易于使用。容器类也都是隐式共的,它们是可重入的,并且已针对速度/低内存消耗和最小的内联代码扩展进行了优化,从而生成了较小的可执行文件。容器类是基于模板的类,......