示例代码
在C++中,将uint64_t转换为QByteArray且不考虑大小端字节序的正确实现如下:
#include<QCoreApplication>#include<QByteArray>#include<QDebug>#include<cstring>// 用于memcpyQByteArrayuint64ToQByteArray(uint64_tvalue){QByteArray bytes;bytes.resize(sizeof(value));// 设置为8字节// 使用memcpy直接复制内存内容(保持系统默认字节序)std::memcpy(bytes.data(),&value,sizeof(value));returnbytes;}intmain(intargc,char*argv[]){QCoreApplicationa(argc,argv);uint64_ttestValue=0x123456789ABCDEF0;QByteArray result=uint64ToQByteArray(testValue);qDebug()<<"Hex representation:"<<result.toHex();qDebug()<<"Raw bytes:"<<result;returna.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小端字节序并指定长度-小端系统