如果我有一个名为log1的日志文件,其中包含以下格式的十六进制值:
D8 D4 D4 D2
D6 D4 D4 D2
D6 D4 D4 D2
D6 D4 D4 D1
...............etc
如何将此值转换为带符号的十进制(请参阅下面的格式),然后将它们保存到另一个名为log2的文件中?
-40 -44 -44 -46
-42 -44 -44 -46
-42 -44 -44 -46
-42 -44 -44 -47
....................etc
with open("log1.log","r") as f:
data = f.read()
def s16(value):
return -(value & 0x80) | (value & 0x7f)
new_data = s16(int(data[0:2], 16)), s16(int(data[3:5], 16)), s16(int(data[6:8], 16)), s16(int(data[9:11], 16))
with open("log2.log","w") as f:
f.write(new_data)
这就是我到目前为止所使用的代码,我可以打印第一行
(-40, -44, -44, -46)
但我不知道如何让它打印所有行而不仅仅是第一行谢谢。
答案 0 :(得分:0)
假设这是两个补码:
return value - 256 if value > 127 else value