将十六进制文件的零填充到特定大小的Python

2024-05-26 11:54:34 发布

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

我有一堆hex文件需要读入python。我想把hex文件的内容分成4个字节块,然后分配给pandas数据帧中的列。在

我的问题是,我的文件目前是不正常的大小-他们需要32字节的倍数-所以我需要零填充每个文件的结尾,这样它的总大小是32的倍数。我现在有下面的代码将十六进制文件的内容读入一个变量,但是我没有找到任何关于如何在文件末尾附加正确字节数(0)的信息。在

gnss_input = "Inputs/TestCommands/Set10Sec" #this is a 67 byte file, needs to be 96 bytes
size = os.path.getsize(gnss_input)
with open(gnss_input,'rb') as file:
  byts = file.read()
  a = binascii.hexlify(byts)

我知道我需要通过从最近的32的倍数减去当前文件大小来附加多少额外的数据,但是我不知道如何创建一个0字符串,它等于这个大小(以字节为单位)来附加到十六进制数据文件中。在

这是我第一次操作十六进制文件和任何帮助将不胜感激!在


Tags: 文件数据代码内容pandasinput字节结尾
1条回答
网友
1楼 · 发布于 2024-05-26 11:54:34

下面的代码将为gnss_input中的文件路径附加适当的十六进制值:

gnss_input = "/home/eric/src/test_pad.txt" #this is a 67 byte file, needs to be 96 bytes
size = os.path.getsize(gnss_input)
if size % 32 != 0:
    pad_number = 32 - (size % 32)
else:
    pad_number = 0
with open(gnss_input,'r+b') as file:
    contents = file.read()  # Read to end of file
    # Do your processing with contents here
    padding = [0x0 for _ in range(pad_number)]  # Create bytearray
    file.write(bytearray(padding))  # Append bytes to the end

相关问题 更多 >