我有一个带有4个小端格式的值的QByteArray
QByteArray ba;
ba.append(0xbb);
ba.append(0x1c);
ba.append(0x51);
ba.append(0x1e);
要将ba转换为大端字节,我可以执行以下操作:
baBigEndian[0] = ba[3];
baBigEndian[1] = ba[2];
baBigEndian[2] = ba[1];
baBigEndian[3] = ba[0];
要将大端数组转换为无符号长整数,我尝试了以下操作:
baBigEndian.toULong(&ok,10);
小字节序字节数组已正确转换为大字节序,但.toULong返回0而不是508632251。
如何将baBigEndian数组转换为无符号长型?还是有办法直接从小端数组转换为无符号长整数?
提前致谢!
最佳答案
试试memcpy
quint32 value = 0; //or qint32
memcpy(&value, baBigEndian.data(), sizeof(quint32));//or baBigEndian instead baBigEndian.data() if you use plain array instead QByteArray
另外,也可以使用
reinterpret_cast
完成此操作,但我不建议您使用reinterpret_cast
,因为我在arm
处理器上遇到了一些问题(而在x86
上运行正常)。