十六进制到十进制符号

时间:2016-08-05 22:12:46

标签: python python-2.7

如果我有一个名为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)

但我不知道如何让它打印所有行而不仅仅是第一行谢谢。

1 个答案:

答案 0 :(得分:0)

假设这是两个补码:

return value - 256 if value > 127 else value