Python2.7.11:如何从十六进制数/十六进制数读取(大)二进制文件

2024-05-10 01:14:53 发布

您现在位置:Python中文网/ 问答频道 /正文

所以我有一个大的二进制文件(范围从256mb到2gb+,所以内存可能是个问题),我只想从文件中选择一些“行”(read:from offset(example of what I'm saying))。在

Example file. Image it being much much larger.

假设我只需要偏移量为000000C0的数据。我该怎么做呢?在

另一个有帮助的方法是将数据从某个偏移量读取到文件末尾/另一个偏移量。在

如果这是可能的,我是否也只能从一点更精确的输入?E、 G.0000007C=93 F8 43…其余文件。在

如果我们保持从一个偏移量到另一个偏移量,0000007C到0000007C=93。在

另外,以这些偏移量写入文件也会有很大的帮助。在

我如何做到这一点,同时保持偏移量的可读性(aka,保持它类似于00001200或00000070,ala示例)以供将来使用/解剖?在


Tags: 文件of数据内存fromreadexample二进制
1条回答
网友
1楼 · 发布于 2024-05-10 01:14:53

可以使用int(string, base=10)函数将十六进制字符串转换为整数。从那里,使用文件句柄的.seek(offset)来设置您的位置。例如:

def read_from_hex_offset(file, hex_offset):
    """Fetch a single byte (or character) from file at hexadecimal offset hex_offset"""
    offset = int(hex_offset, base=16)
    file.seek(offset)
    return file.read(1)

请注意,二进制文件和文本文件都可以seek编辑,结果会有所不同-二进制文件有read()字节,而文本文件将read()一个字符串并尝试处理编码。对于您的应用程序,您应该使用二进制模式open()您的文件:"rb"或{}。在

相关问题 更多 >