在閱讀 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
