将二进制数据转换为有符号整数

use*_*640 5 python

我读了一个二进制文件,得到一个带字符的数组.当我将两个字节转换为整数时256*ord(p1) + ord(p0).它适用于正整数但是当我得到负数时它不起作用.我知道在最重要的字节中有第一位但是没有成功.

我也明白有一些东西叫做struct,在阅读后我最终得到了以下代码

import struct

p1 = chr(231)
p0 = chr(174)

a = struct.unpack('h',p0+p1)

print str(a)
Run Code Online (Sandbox Code Playgroud)

a变成-6226,如果我换掉p0,p1我得到-20761.

a 应该是-2

Too*_*mai 0

使用第一种方法 ( 256*ord(p1) + ord(p0)),您可以使用 来检查第一位是否为 1 if p1 & 0x80 > 0。如果是这样,那么您将使用p1 & 0x7f代替p1,然后否定最终结果。