python牽涉的數據類型比較繁多,編程過程中,經常需要在不同類型的數據之間進行恰當的轉換
1、int轉bytes
>>> x=97
>>> y=str(x) #轉str
>>> print(type(y))
<class 'str'>
>>> print(y.encode()) #轉bytes
b'97'
>>>
2、bytes轉uint
#
def U4(a):
'''將單個bytes類型的字符a轉換成int返回'''
a_int = int.from_bytes(a,byteorder='big',signed=False)
if a_int>=97:#0xa~0xf
a_int = a_int - 87
else:
a_int = a_int - 48
return a_int
def U8(a):
'''將bytes類型的符號a(長度2,對應8bit)轉成U8整數並返回'''
if(len(a) != 2):
print('error len')
res = (U4(a[0:1])<<4) + U4(a[1:2])
return res
def U16(a):
'''將bytes類型的符號a(長度4,對應16bit)轉成U16整數並返回'''
if(len(a) != 4):
print('error len')
res = (U8(a[0:2])<<8) + (U8(a[2:4]))
return res
def U32(a):
'''將bytes類型的符號a(長度8,對應32bit)轉成U32整數並返回'''
if(len(a) != 8):
print('error len')
res = (U16(a[0:4]) <<16) + U16(a[4:8])
return res
#
3、char轉int
>>> x='a'
>>> y=ord(x) #轉ascii
>>> print(y)
97
>>> z=hex(y)
>>> print(z)
0x61
>>> print(type(z))
<class 'str'>
4、bytes與str互轉
>>> x=b'12'
>>> y=x.decode() #bytes轉str
>>> print(x)
b'12'
>>> print(y)
12
>>> print(type(y))
<class 'str'>
>>> z=y.encode('utf-8') #str轉bytes
>>> print(z)
b'12'
>>> print(type(z))
<class 'bytes'>