我有一个包含二进制数据的文件,该文件内容只有一行。
例子:
原本这个文件的内容是一个C++对象数组,其数据类型如下:
现在我的问题是,我的
我是Python的新手,请给我一些提示,让我知道如何更好地完成某些操作。
例子:
010101000011101010101
原本这个文件的内容是一个C++对象数组,其数据类型如下:
// Care pseudo code, just for visualisation
int64 var1;
int32 var2[50];
int08 var3;
我想跳过var1
和var3
,仅提取var2
的值,并将其转换为一些可读的十进制值。我的想法是逐字节读取文件并将它们转换为十六进制值。在下一步中,我想“组合”(附加)4个这样的十六进制值以获得一个int32
值。
示例:0x10 0xAA 0x00 0x50 -> 0x10AA0050
到目前为止,我的代码如下:
def append_hex(a, b):
return (a << 4) | b
with open("file.dat", "rb") as f:
counter = 0
tickdifcounter = 0
current_byte=" "
while True:
if (counter >= 8) and (counter < 208):
tickdifcounter+=1
if (tickdifcounter <= 4):
current_byte = append_hex(current_byte, f.read(1))
if (not current_byte):
break
val = ord(current_byte)
if (tickdifcounter > 4):
print hex(val)
tickdifcounter = 0
current_byte=""
counter+=1
if(counter == 209): #209 bytes = int64 + (int32*50) + int08
counter = 0
print
现在我的问题是,我的
append_hex
无法工作,因为这些变量是字符串,所以位移运算符无法使用。我是Python的新手,请给我一些提示,让我知道如何更好地完成某些操作。