我有一个带有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上运行正常)。

09-07 07:04