qt-通信协议基础-uint64_t转QByteArray-小端系统

示例代码

在C++中,将uint64_t转换为QByteArray且不考虑大小端字节序的正确实现如下:

cpp 复制代码
#include <QCoreApplication>
#include <QByteArray>
#include <QDebug>
#include <cstring> // 用于memcpy

QByteArray uint64ToQByteArray(uint64_t value) {
    QByteArray bytes;
    bytes.resize(sizeof(value)); // 设置为8字节
    
    // 使用memcpy直接复制内存内容(保持系统默认字节序)
    std::memcpy(bytes.data(), &value, sizeof(value));
    
    return bytes;
}

int main(int argc, char *argv[]) {
    QCoreApplication a(argc, argv);
    
    uint64_t testValue = 0x123456789ABCDEF0;
    QByteArray result = uint64ToQByteArray(testValue);
    
    qDebug() << "Hex representation:" << result.toHex();
    qDebug() << "Raw bytes:" << result;
    
    return a.exec();
}

关键点解析

字节序无关性:

使用memcpy直接复制内存内容,结果字节序与当前系统字节序一致。

若系统是小端,则0x123456789ABCDEF0会存储为F0 DE BC 9A 78 56 34 12(小端序)。

若系统是大端,则存储为12 34 56 78 9A BC DE F0(大端序)。

长度处理

默认生成8字节的QByteArray,与uint64_t内存占用一致。

若需调整长度,可通过bytes.resize(targetLength)扩展或截断,但需注意扩展时填充位置(前端/后端)和填充值(如0x00)。

互动

qt-uint64_t转QByteArray小端字节序并指定长度-小端系统

相关推荐
551只玄猫20 小时前
【数学建模 matlab 实验报告13】主成分分析
开发语言·数学建模·matlab·课程设计·主成分分析
zzzzls~21 小时前
Python 工程化: 用 Copier 打造“自我进化“的项目脚手架
开发语言·python·copier
韶博雅21 小时前
emcc24ai
开发语言·数据库·python
yongui4783421 小时前
C# 与三菱PLC通讯解决方案
开发语言·c#
2501_9333295521 小时前
技术架构深度解析:Infoseek舆情监测系统的全链路设计与GEO时代的技术实践
开发语言·人工智能·分布式·架构
Tong Z21 小时前
常见的限流算法和实现原理
java·开发语言
凭君语未可21 小时前
Java 中的实现类是什么
java·开发语言
wearegogog12321 小时前
离散系统参数辨识与广义预测控制MATLAB实现
开发语言·matlab
史迪仔011221 小时前
[QML] QML IMage图像处理
开发语言·前端·javascript·c++·qt