Python-整型int和浮点型float的附加方法

↘锁芯ラ 提交于 2019-12-16 09:22:17

1.int.bit_length():返回以二进制表示一个整数所需要的位数,不包括符号位和前面的零

n=37
print(bin(n))  #0b100101
print(n.bit_length())  #6

n=-37
print(bin(n))  #-0b100101
print(n.bit_length())  #6

n=0
print(bin(n))  #0b01
print(n.bit_length())  #0

2.int.to_bytes(length, byteorder, *, signed=False):返回表示一个整数的字节数组

length--表示字节数

byteorder--确定用于表示整数的字节顺序,如果 byteorder 为 "big",则最高位字节放在字节数组的开头;如果 byteorder 为 "little",则最高位字节放在字节数组的末尾

signed--确定是否使用二的补码来表示整数; 如果 signed 为 False 并且给出的是负整数,则会引发 OverflowError;signed 的默认值为 False

n=37
print(n.to_bytes(2,byteorder="big"))  #b'\x00%'
n=2015
print(n.to_bytes(2,byteorder="big"))  #b'\x07\xdf'

n=37
print(n.to_bytes(10,byteorder="big"))  #b'\x00\x00\x00\x00\x00\x00\x00\x00\x00%'
n=2015
print(n.to_bytes(10,byteorder="big"))  #b'\x00\x00\x00\x00\x00\x00\x00\x00\x07\xdf'

n=37
print(n.to_bytes(10,byteorder="little"))  #b'%\x00\x00\x00\x00\x00\x00\x00\x00\x00'
n=2015
print(n.to_bytes(10,byteorder="little"))  #b'\xdf\x07\x00\x00\x00\x00\x00\x00\x00\x00'

n=37
print(n.to_bytes(10,byteorder="big",signed=False))  #b'%\x00\x00\x00\x00\x00\x00\x00\x00\x00'
n=2015
print(n.to_bytes(10,byteorder="big",signed=True))  #b'\x00\x00\x00\x00\x00\x00\x00\x00\x07\xdf'

3.int.from_bytes(bytes, byteorder, *, signed=False):返回由给定字节数组所表示的整数

bytes--必须为一个 bytes-like object 或是生成字节的可迭代对象。

byteorder--确定用于表示整数的字节顺序,如果 byteorder 为 "big",则最高位字节放在字节数组的开头,如果 byteorder 为 "little",则最高位字节放在字节数组的末尾

signed--指明是否使用二的补码来表示整数

n=b'\x00%'
print(int.from_bytes(n,byteorder="big"))  #37

n=b'\x07\xdf'
print(int.from_bytes(n,byteorder="big"))  #2015


n=b'\x00\x00\x00\x00\x00\x00\x00\x00\x00%'
print(int.from_bytes(n,byteorder="big"))  #37

n=b'\x00\x00\x00\x00\x00\x00\x00\x00\x07\xdf'
print(int.from_bytes(n,byteorder="big"))  #2015

n=b'\x00\x00\x00\x00\x00\x00\x00\x00\x07\xdf'
print(int.from_bytes(n,byteorder="little"))  #1053216852888446849515520


n=b'%\x00\x00\x00\x00\x00\x00\x00\x00\x00'
print(int.from_bytes(n,byteorder="little"))  #37

n=b'\xdf\x07\x00\x00\x00\x00\x00\x00\x00\x00'
print(int.from_bytes(n,byteorder="little"))  #2015


n=b'%\x00\x00\x00\x00\x00\x00\x00\x00\x00'
print(int.from_bytes(n,byteorder="big",signed=False))  #174727559866176872906752

n=b'\x00\x00\x00\x00\x00\x00\x00\x00\x07\xdf'
print(int.from_bytes(n,byteorder="big",signed=True))  #2015

4.int.as_integer_ratio():返回一对整数,其比率正好等于原整数并且分母为正数。用这个整数本身作为分子,1 作为分母

n=1
print(n.as_integer_ratio())  #(1, 1)

n=0
print(n.as_integer_ratio())  #(0, 1)

n=10
print(n.as_integer_ratio())  #(10, 1)

n=-10
print(n.as_integer_ratio())  #(-10, 1)

5.float.as_integer_ratio():返回一对整数,其比率正好等于原浮点数并且分母为正数。 无穷大会引发 OverflowError 而 NaN 则会引发 ValueError

n=1.0
print(n.as_integer_ratio())  #(1, 1)

n=0.1
print(n.as_integer_ratio())  #(3602879701896397, 36028797018963968)

n=10.25
print(n.as_integer_ratio())  #(41, 4)

n=-10.25
print(n.as_integer_ratio())  #(-41, 4)

n=1/3
print(n.as_integer_ratio())  #(6004799503160661, 18014398509481984)

6.float.is_integer():如果浮点数可用有限位整数表示则返回 True,否则返回 False

n=1.0
print(n.is_integer())  #True

n=0.1
print(n.is_integer())  #False

n=10.000
print(n.is_integer())  #True

7.float.hex():以十六进制字符串的形式返回一个浮点数表示

n=1.0
print(n.hex())  #0x1.0000000000000p+0

n=0.1
print(n.hex())  #0x1.999999999999ap-4

n=10.000
print(n.hex())  #0x1.4000000000000p+3

8.classmethod float.fromhex(s):返回以十六进制字符串 s 表示的浮点数的类方法,字符串 s 可以带有前导和尾随的空格

n="0x1.0000000000000p+0"
print(float.fromhex(n))  #1.0

n="0x1.999999999999ap-4"
print(float.fromhex(n))  #0.1

n="0x1.4000000000000p+3"
print(float.fromhex(n))  #10.0

 

 

 

 

 

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!