如何按位字节序将数字转换为字节数组

Phi*_*ent 5 c++ compression vb6 qt endianness

我正在尝试使用 zlib API 解压缩在 VB6 中创建的一些数据。

我已经读过 qUncompress 函数可以做到这一点:http ://doc.trolltech.com/4.4/qbytearray.html#qUncompress

我已经通过 readRawBytes 将 QDataStream 中的数据读入一个字符数组,然后将其转换为 QByteArray 进行解压缩。我有压缩长度和预期的解压缩长度,但没有从 qUncompress 得到任何回报。

但是,我需要以大端格式添加预期的解压缩长度。有没有人做过这个并有一个例子?

Mik*_* G. 2

我已经很久没有使用过 VB6 了,所以我希望这大致是正确的。我认为vb6使用()进行数组索引。如果我有任何问题,请告诉我。

查看 qUncompress 文档,您应该将数据从字节 5 开始放入 QByteArray 中(在本示例中,我假设您将数组索引基数设置为 1)。

假设该数组名为 qArr,预期的未压缩大小为 Size。在“大端”表示中,第一个字节位于第一个地址。

qArr(1) = int(Size/(256*256*256))
qArr(2) = 255 And int(Size/256*256)
qArr(3) = 255 And int(Size/256)
qArr(4) = 255 And int(Size)
Run Code Online (Sandbox Code Playgroud)

那有意义吗?

如果您需要小尾数,您可以反转索引的顺序 (qArr(4) - qArr(1)) 并保持计算不变。