gpt4 book ai didi

python - Python 有方便解析二进制格式的工具吗?

转载 作者:太空宇宙 更新时间:2023-11-04 01:45:15 24 4
gpt4 key购买 nike

我有一个格式如下的二进制字符串:

  • (短)num_tables
  • (短)table_width
  • (短)table_height
  • 表格:
    • (3 * 宽 * 高 * 短) table_data
    • ... 重复 num_tables

目前我正在用这个非常丑陋的困惑来解析它:

def decode_table_data(input_bytes):
# Data is little-endian
num_tables = input_bytes[0] + (input_bytes[1] << 8)
table_width = input_bytes[2] + (input_bytes[3] << 8)
table_height = input_bytes[4] + (input_bytes[5] << 8)

# TODO: Extract table_data

这显然难以阅读、丑陋、需要一段时间才能输入,而且容易出错。我更喜欢这样的语法:

def decode_table_data(input_bytes):
num_tables = input_bytes.read_short(little_endian=True)
table_width = input_bytes.read_short(little_endian=True)
table_height = input_bytes.read_short(little_endian=True)

我知道很多语言都有像这样读取字节数组的工具(read_shortread_int 等)。 Python中有这样的工具吗?我试着用谷歌搜索它,但找不到任何东西。

最佳答案

您正在寻找 struct 模块。

import struct


def decode_table_data(input_bytes):
header = struct.Struct("<HHH")
num_tables, table_width, table_height = header.unpack_from(input_bytes)

table_size = 3 * table_width * table_height
offset = += header.size

for _ in range(num_tables):
table_data = struct.unpack_from(f"{table_size}B", input_bytes, offset)
# Do something with table_data
offset += table_size

关于python - Python 有方便解析二进制格式的工具吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59215468/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com