当前位置: 首页 > news >正文

QT 字节大小端转序方法

在Qt中,可以使用qToLittleEndian和qToBigEndian两个函数来实现大小端字节序之间的转换。

1.转换为小端字节序:

1 quint32 num = 0x12345678;
2 quint32 littleEndianNum = qToLittleEndian(num); // 转换为小端字节序

2.转换为大端字节序:

1 quint32 num = 0x12345678;
2 quint32 bigEndianNum = qToBigEndian(num); // 转换为大端字节序

这两个函数可以用于各种整型数据类型,如quint8、quint16、quint32、quint64等。通过这些函数,可以方便地进行大小端字节序之间的转换。

3、qToBigEndian方法

   uchar temp[2] = {0};
QByteArray byteArray;
byteArray.clear();

   int  iModeType = 0xFF01;

   qToBigEndian<quint16>(stRunModePath.iModeType, temp);
byteArray.append(reinterpret_cast<char*>(temp), 2);

   uint16_t *pData =  (uint16_t*)byteArray.data();

4、具体库函数参考查询


template <typename T> inline Q_DECL_CONSTEXPR T qToBigEndian(T source)
{ return qbswap(source); }
template <typename T> inline Q_DECL_CONSTEXPR T qFromBigEndian(T source)
{ return qbswap(source); }
template <typename T> inline Q_DECL_CONSTEXPR T qToLittleEndian(T source)
{ return source; }
template <typename T> inline Q_DECL_CONSTEXPR T qFromLittleEndian(T source)
{ return source; }
template <typename T> inline void qToBigEndian(T src, void *dest)
{ qbswap<T>(src, dest); }
template <typename T> inline void qToLittleEndian(T src, void *dest)
{ qToUnaligned<T>(src, dest); }

template <typename T> inline void qToBigEndian(const void *source, qsizetype count, void *dest)
{ qbswap<sizeof(T)>(source, count, dest); }
template <typename T> inline void qToLittleEndian(const void *source, qsizetype count, void *dest)
{ if (source != dest) memcpy(dest, source, count * sizeof(T)); }
template <typename T> inline void qFromBigEndian(const void *source, qsizetype count, void *dest)
{ qbswap<sizeof(T)>(source, count, dest); }
template <typename T> inline void qFromLittleEndian(const void *source, qsizetype count, void *dest)
{ if (source != dest) memcpy(dest, source, count * sizeof(T)); }

http://www.dtcms.com/a/337769.html

相关文章:

  • Qt5基础控件详细讲解
  • VSCode REST Client 使用总结
  • 【力扣-轮转数组 Java / Python】
  • leetcode415. 字符串相加
  • 【论文阅读】-《HopSkipJumpAttack: A Query-Efficient Decision-Based Attack》
  • Jenkins全链路教程——Jenkins调用Maven构建项目
  • 北京朝阳公园——夏日清凉来袭
  • 第7节 神经网络
  • 登上Nature!清华大学光学神经网络研究突破
  • FastAPI + React:现代 Web 前后端分离开发的全栈实践指南
  • 【原理】Unity GC 对比 C# GC
  • 电竞酒店和高校宿舍对AI云电竞游戏盒子的需求有什么不同?
  • 静态资源保存插件横评:Save All Resources 与 ResourcesSaverExt 哪个更适合你?
  • 无人机基础知识
  • 测绘级组合导航如何重新定义大型无人机的高精度导航标准?
  • 用本地代理 + ZIP 打包 + Excel 命名,优雅批量下载跨域 PDF
  • PDF转图片需要用到什么技术?苹果手机怎样将PDF转为jpg?
  • HTML/CSS 实战知识点总结:从基础到常用效果全解析
  • 2025 世界机器人大会启示录:机构学 × AI × 视频链路的融合之路
  • 【低空安全】低空安全简介
  • 27.Linux 使用yum安装lamp,部署wordpress
  • Kafka 零拷贝(Zero-Copy)技术详解
  • 【学习嵌入式-day-27-进程间通信】
  • 开放最短路径优先协议
  • Read View 在 MVCC 里如何工作的?
  • DSP音频算法工程师技能2
  • IDE开发系列(2)扩展的IDE框架设计
  • GNhao/GN号,海外SIM号怎么注册详细步骤!
  • 纯前端表格控件SpreadJS v18.0 Update1正式发布——集成AI智能化插件
  • 大数据计算引擎(一)——Spark