int.from_bytes和int.to_bytes函数介绍

环境:Python3.5

1.int.from_bytes函数

  • 功能:res = int.from_bytes(x)的含义是把bytes类型的变量x,转化为十进制整数,并存入res中。其中bytes类型是python3特有的类型。
  • 函数参数:int.from_bytes(bytes, byteorder, *, signed=False)。在IDLE或者命令行界面中使用help(int.from_bytes)命令可以查看具体介绍。bytes是输入的变量;byteorder主要有两种:'big'和'little';signed=True表示需要考虑符号位。
  • 举例说明:int_s  = int.from_bytes(s, byteorder='little', signed=True),其中s='\xf1\xff',则输出int_s=-15。分析一下过程,'\x'表示十六进制数,先把'f1'写成二进制数:1111 0001,'ff'同上:1111 1111.由于s的高低位标志是'little',即'f1'是低位,'ff'是高位,所以正确的顺序应该是'fff1',即11111111 1111 0001.又因为要考虑符号位,第一位是1,所以s是负数,要进行取反加一才是正确的十进制数(第一位符号位的1不变),可以得到10000000 00001111,写成十进制,就是-15,也就是int_s的结果。上面的例子中,如果signed=False,则无符号位;若byteorder='big',则输入s的左边是高位,右边是低位。
  • >>> s1 = b'\xf1\xff'
    >>> print(int.from_bytes(s1, byteorder='little', signed=True))
    -15
    >>> print(int.from_bytes(s1, byteorder='big', signed=False))
    61951
    >>> s2 = b'\xff\xf1'
    >>> print(int.from_bytes(s2, byteorder='little', signed=False))
    61951


2.int.to_bytes函数

  • 功能:是int.from_bytes的逆过程,把十进制整数,转换为bytes类型的格式。

猜你喜欢

转载自blog.csdn.net/clovera/article/details/79293108