python3 解析 base64 数据

在阅读 glTF-Tutorial 教程时遇到了解析 base64 数据的问题。

原始 base64 数据为AAABAAIAAAAAAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAA=。包含两个数据:

数据1:数据起始位置为 0,长度为 6,数据类型为 UNSIGNED_SHORT;数据2:数据起始位置为 8,长度为 36,数据类型为 FLOAT

解析代码如下:

import base64
import struct

origin_data = b'AAABAAIAAAAAAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAA='
decoded_data = base64.b64decode(origin_data)

data1 = decoded_data[:6]
format1 = 'H' * int(len(data1)/struct.calcsize('H'))
output_data1 = struct.unpack(format1, data1)
# output_data1 = (0, 1, 2)

data2 = decoded_data[8:]
format2 = 'f' * int(len(data2)/struct.calcsize('f'))
output_data2 = struct.unpack(format2, data2)
# output_data2 = (0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 1.0, 0.0)

参考资料
base64 — Python 3.7.0 documentation
struct — Python 3.7.0 documentation

posted @ 2018-09-13 09:58  flypopo  阅读(2312)  评论(0编辑  收藏  举报