运算中的两种进制相信大家都不陌生,那就是十进制和十六进制。在操作中我们会根据不同的使用条件进行进制之间的转换。这里小编最近学习了一个内置函数,是专门针对进制转换使用的。下面我们先就hex()函数进行简单的概念理解,然后学习hex()在python中转换进制的方法。
一、说明:
1. 函数功能将10进制整数转换成16进制整数。
>>>hex(15) '0xf' >>>hex(16) '0x10'
2. 如果参数x不是整数,则它必须定义一个返回整数的__index__函数。
#未定义__index__函数 >>>classStudent: def__init__(self,name,age): self.name=name self.age=age >>> >>>s=Student('Kim',10) >>>hex(s) Traceback(mostrecentcalllast): File"<pyshell#17>",line1,in<module> hex(s) TypeError:'Student'objectcannotbeinterpretedasaninteger #定义__index__函数,但是返回字符串 >>>classStudent: def__init__(self,name,age): self.name=name self.age=age def__index__(self): returnself.name >>>s=Student('Kim',10) >>>hex(s) Traceback(mostrecentcalllast): File"<pyshell#23>",line1,in<module> hex(s) TypeError:__index__returnednon-int(typestr) #定义__index__函数,并返回整数 >>>classStudent: def__init__(self,name,age): self.name=name self.age=age def__index__(self): returnself.age >>>s=Student('Kim',10) >>>hex(s) '0xa'
二、转为十六进制(Hex)字符串
defgetStringFromNumber(self,size,value): """ 转为十六进制(Hex)字符串 :paramsize: :paramvalue: :return: """ size=int(size) value=int(value) by=bytearray([]) foriinrange(1,size+1): val=value>>8*(size-i)&255 by.append(val) val=by.hex() print("===============================") print("%s转为%s个字节十六进制(Hex)字符串:%s"%(value,size,val)) print("===============================") returnval getStringFromNumber(5,11)
以上就是使用hex()在python中转换进制的方法,想要把十进制转换的小伙伴可以试试这种方法,更重要的是hex()会以字符串的形式展现出来。