解码,小端,未压缩和浮点数组

thc*_*and 6 python base64

我有来自实验的Base64编码数据.所以我试图逐步做的是:

  • 从base64编码中检索字节(解码它)
  • 将字节转换为little-endian
  • 从(zlib)解压缩字节
  • 将字节数组转换为float数组

例:

Dn3LQ3np4kOyxQJE20kDRBRuFkScZB5ENxEzRFa+O0THMz9EOQRCRFC1QkRYeUNEwXJJROfbSUScvE5EVDtVRK5PV0TLUWNE481lRHX7ZkSBBWpE9FVyRIFdeESkoHhEnid8RI1nfUSy4YBE/C2CRGKQg0RcR4RE54uEROUAhUTBWodErKyMRNsVkkRvUpJEukWURO58lkSqRZ1E2VauRPBTwEQf9cVE9BnKRA==

到目前为止我尝试过的

import os
import base64
import struct

s = 'Dn3LQ3np4kOyxQJE20kDRBRuFkScZB5ENxEzRFa+O0THMz9EOQRCRFC1QkRYeUNEwXJJROfbSUScvE5EVDtVRK5PV0TLUWNE481lRHX7ZkSBBWpE9FVyRIFdeESkoHhEnid8RI1nfUSy4YBE/C2CRGKQg0RcR4RE54uEROUAhUTBWodErKyMRNsVkkRvUpJEukWURO58lkSqRZ1E2VauRPBTwEQf9cVE9BnKRA=='
decode=base64.decodestring(s)

tmp_size=len(decode)/4
Run Code Online (Sandbox Code Playgroud)

现在我试图从这里将这些字节转换为小端.

我想用Python做下一个操作.

我想弄明白自己,但是花了太多时间.

谢谢!

Jef*_*ado 6

您的数据似乎并未实际压缩.使用循环使用struct.unpack_from()或作为一个大结构将数据读取为浮点数struct.unpack().

import base64
import struct

encoded = 'Dn3LQ3np ... 9BnKRA=='

# decode the string
data = base64.standard_b64decode(encoded)

# ensure that there's enough data for 32-bit floats
assert len(data) % 4 == 0

# determine how many floats there are
count = len(data) // 4

# unpack the data as floats
result = struct.unpack('<{0}f'.format(count), # one big structure of `count` floats
                       data)                  # results returned as a tuple
Run Code Online (Sandbox Code Playgroud)

如果数据已压缩,请将其解压缩.

import zlib

decompressed = zlib.decompress(data)
Run Code Online (Sandbox Code Playgroud)