牛骨文教育服务平台(让学习变的简单)
博文笔记

int.from_bytes和int.to_bytes函数介绍

创建时间:2018-02-08 投稿人: 浏览次数:133

环境: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="xf1xff",则输出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"xf1xff"
    >>> print(int.from_bytes(s1, byteorder="little", signed=True))
    -15
    >>> print(int.from_bytes(s1, byteorder="big", signed=False))
    61951
    >>> s2 = b"xffxf1"
    >>> print(int.from_bytes(s2, byteorder="little", signed=False))
    61951


2.int.to_bytes函数

  • 功能:是int.from_bytes的逆过程,把十进制整数,转换为bytes类型的格式。
声明:该文观点仅代表作者本人,牛骨文系教育信息发布平台,牛骨文仅提供信息存储空间服务。