在阅读 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