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小端字节序并指定长度-小端系统

相关推荐
fqbqrr3 小时前
2606C++,C++构的多态
开发语言·c++
biter down4 小时前
从 0 到 1 搭建 Python 接口自动化测试框架(博客系统实战)
开发语言·python
threelab5 小时前
Three.js 物理模拟着色器 | 三维可视化 / AI 提示词
开发语言·前端·javascript·人工智能·3d·着色器
武器大师726 小时前
lv_binding_js 代码解读
开发语言·javascript·ecmascript
不知名的老吴6 小时前
线程的生命周期之线程“插队“
java·开发语言·python
kaikaile19956 小时前
数字全息图处理系统(C# 实现)
开发语言·c#
秋98 小时前
Go语言(Golang)开发工程师全景解析:岗位职责·语言优势与使用场景·各城市薪资·发展前景·高考志愿填报(2026版)
开发语言·golang·高考
huangdong_8 小时前
1688商品图片采集技术解析:登录态处理与SKU图自动分类
开发语言
chase_my_dream9 小时前
C++ + SLAM 高频面试问题整理
开发语言·c++·面试