python3 内置函数 hex()、oct()、bin()、chr()、ord()

一、hex()函数

hex() 函数用于将10进制整数转换成16进制,以字符串形式表示。
语法:hex(x)
参数说明:x – 10进制整数
返回值:返回16进制数,以字符串形式表示。
实例:

hex(255)
>>>'0xff'
hex(-42)
>>>'-0x2a'
hex(1L)
>>>'0x1L'
hex(12)
>>>'0xc'
type(hex(12))
# 字符串
>>><class 'str'>
另浮点数转换为十六进制表示需要使用float.hex()来转换,而不能使用本函数。
float.hex(10.1)
>>>0x1.4333333333333p+3

二、oct()函数

oct() 函数将一个整数转换成8进制字符串。
如果传入浮点数或者字符串均会报错。
语法:oct(x)
参数说明:x – 整数。
返回值:返回8进制字符串。
实例:

1、函数功能将一个整数转换成8进制字符串。如果传入浮点数或者字符串均会报错。
a = oct(10)
print(a)
>>> '0o12'
# 返回结果类型是字符串
print(type(a))
>>> <class 'str'>
# 浮点数不能转换成8进制
print(oct(10.0))
>>> Traceback (most recent call last):
    File "", line 8, in <module>
    oct(10.0)
    TypeError: 'float' object cannot be interpreted as an integer
# 字符串不能转换成8进制
print(oct('10')) 
>>> Traceback (most recent call last):
     File "", line 1, in <module>
      oct('10')
    TypeError: 'str' object cannot be interpreted as an integer
2、如果传入参数不是整数,则其必须是一个定义了__index__并返回整数函数的类的实例对象
# 未定义__index__函数,不能转换
class Student:
    def __init__(self, name, age):
        self.name = name
        self.age = age
        a = Student('Kim', 10)
        oct(a)
# Traceback (most recent call last):
#  File "", line 1, in 
#   oct(a)
# TypeError: 'Student' object cannot be interpreted as an integer

# 定义了__index__函数,但是返回值不是int类型,不能转换
class Student:
    def __init__(self, name, age):
        self.name = name
        self.age = age
    def __index__(self):
        return self.name
# >>> a = Student('Kim',10)
# >>> oct(a)
# Traceback (most recent call last):
#  File "", line 1, in 
#   oct(a)
# TypeError: __index__ returned non-int (type str)

# 定义了__index__函数,而且返回值是int类型,能转换
class Student:
    def __init__(self, name, age):
        self.name = name
        self.age = age
    def __index__(self):
        return self.age
# >>> a = Student('Kim',10)
# >>> oct(a)
# '0o12'

三、bin()函数

bin() 返回一个整数int或者长整数long int的二进制表示。也就是将一个整型数字转换成二进制表示
语法:bin(x)
参数:x – int或者long int数字
返回值:字符串。

1、将一个整型数字转换成二进制字符串
a = bin(1)
print(a)
>>> '0b1'
# 获取a的类型
print(type(a))
>>> <class 'str'>

2、如果参数x不是一个整数,则x必须定义一个__index__()方法,并且方法返回值必须是整数。
# 2.1 如果对象不是整数,则报错
class A():
    pass
a = A()
print(bin(a))
# Traceback (most recent call last):
#   File "", line 1, in 
#     bin(a)
# TypeError: 'A' object cannot be interpreted as an integer

# 2.2 如果对象定义了__index__方法,但返回值不是整数,报错
class A():
    def __index__(self):
        return "1"
b = A()
print(bin(b))
# Traceback (most recent call last):
#   File "", line 1, in 
#     bin(b)
# TypeError: __index__ returned non-int (type str)

# 2.3 对象定义了__index__方法,且返回值是整数,将__index__方法返回值转换成二进制字符串
class A():
    def __index__(self):
        return 1
c = A()
print(bin(c))
# '0b1'

四、chr()函数

首先值得说明的是:
Python2中使用的chr()将Ascii的值转换成对应字符,unichr()将Unicode的值转换成对应字符而Python3中unichr内置函数消失了,实际上是Python3中的chr()不仅仅支持Ascii的转换,直接支持了更为适用的Unicode转换。

chr() 用一个范围在range(256)内的(就是0~255)整数作参数,返回一个对应的字符。
语法:chr(i)
参数:i – 可以是10进制也可以是16进制的形式的数字。
返回值:返回值是当前整数对应的ascii字符。
实例:

#输入Unicode编码起始值和终止值,打印此范围内所有字符
beg = int(input("请输入起始值:"))
end = int(input("请输入终止值:"))
print("十进制编码\t十六进制编码\t字符")

#hex()转十六进制 chr()求十进制或十六进制对应的字符
for i in range(beg,end+1):
    print("{}\t\t\t{}\t\t\t{}".format(i,hex(i),chr(i)))
# 请输入起始值:1
# 请输入终止值:5
# 十进制编码    十六进制编码 字符
# 1          0x1          
# 2          0x2          
# 3          0x3          
# 4          0x4          
# 5          0x5    

五、ord()函数

ord()函数是chr()函数(对于8位的ASCII字符串或unichr()函数(对于Unicode对象)的配对函数,它以一个字符(长度为1的字符串)作为参数,返回对应的ASCII数值,或者Unicode数值,如果所给的Unicode字符超出了你的Python定义范围,则会引发一个 TypeError 的异常。
语法:ord©
参数:c – 字符。
返回值:返回值是对应的十进制整数。
实例

print('ord(a)', ord('a'))
print('ord(u2020)', ord('\u2020'))
print('ord(1)', ord('1'))
# ord(a) 97
# ord(u2020) 8224
# ord(1) 49

本函数是把一个字符串表示的字符转换为字符相对应的整数,适用于UNICODE字符。比如ord(‘a’)则返回整数97,ord(‘\u2020’)则返回整数8224。与函数chr()的功能刚好相反.

2进制 8进制 10进制 16进制
2进制 - bin(int(x,8)) bin(int(x,10)) bin(int(x,16))
8进制 oct(int(x,2)) - oct(int(x,10)) oct(int(x,16))
10进制 int(x,2) int(x,8) - int(x,16
16进制 hex(int(x,2)) hex(int(x,8)) hex(int(x,10)) -

你可能感兴趣的:(python,开发语言)