一、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 "<XXX.py>", 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 "<pyshell#4>", 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 "<pyshell#12>", line 1, in <module>
# 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 "<pyshell#18>", line 1, in <module>
# 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 "<pyshell#25>", line 1, in <module>
# 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 "<pyshell#31>", line 1, in <module>
# 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)) | - |