aaaaaaaaaaaa
代码改变世界

python数据类型转换

2018-01-17 15:41  二进制乐谱  阅读(2970)  评论(0编辑  收藏  举报

python中的字符数字之间的转换函数

 
int(x [,base ])         将x转换为一个整数    
long(x [,base ])        将x转换为一个长整数    
float(x )               将x转换到一个浮点数    
complex(real [,imag ])  创建一个复数    
str(x )                 将对象 x 转换为字符串    
repr(x )                将对象 x 转换为表达式字符串    
eval(str )              用来计算在字符串中的有效Python表达式,并返回一个对象    
tuple(s )               将序列 s 转换为一个元组    
list(s )                将序列 s 转换为一个列表    
chr(x )                 将一个整数转换为一个字符    
unichr(x )              将一个整数转换为Unicode字符    
ord(x )                 将一个字符转换为它的整数值    
hex(x )                 将一个整数转换为一个十六进制字符串    
oct(x )                 将一个整数转换为一个八进制字符串   
 
 
chr(65)='A'
ord('A')=65
 
int('2')=2;
str(2)='2'
 
 
进行协议解析时,总是会遇到各种各样的数据转换的问题,从二进制到十进制,从字节串到整数等等
整数之间的进制转换:

10进制转16进制: hex(16)  ==>  0x10
16进制转10进制: int('0x10', 16)  ==>  16
类似的还有oct(), bin()
 
 
字符串转整数:
10进制字符串: int('10')  ==>  10
16进制字符串: int('10', 16)  ==>  16
16进制字符串: int('0x10', 16)  ==>  16
 
 
字节串转整数:
转义为short型整数: struct.unpack('<hh', bytes(b'\x01\x00\x00\x00'))  ==>  (1, 0)
转义为long型整数: struct.unpack('<L', bytes(b'\x01\x00\x00\x00'))  ==>  (1,)
 
 
整数转字节串:
转为两个字节: struct.pack('<HH', 1,2)  ==>  b'\x01\x00\x02\x00'
转为四个字节: struct.pack('<LL', 1,2)  ==>  b'\x01\x00\x00\x00\x02\x00\x00\x00'
 
 
字符串转字节串:
字符串编码为字节码: '12abc'.encode('ascii')  ==>  b'12abc'
数字或字符数组: bytes([1,2, ord('1'),ord('2')])  ==>  b'\x01\x0212'
16进制字符串: bytes().fromhex('010210')  ==>  b'\x01\x02\x10'
16进制字符串: bytes(map(ord, '\x01\x02\x31\x32'))  ==>  b'\x01\x0212'
16进制数组: bytes([0x01,0x02,0x31,0x32])  ==>  b'\x01\x0212'
 
 
字节串转字符串:
字节码解码为字符串: bytes(b'\x31\x32\x61\x62').decode('ascii')  ==>  12ab
字节串转16进制表示,夹带ascii: str(bytes(b'\x01\x0212'))[2:-1]  ==>  \x01\x0212
字节串转16进制表示,固定两个字符表示: str(binascii.b2a_hex(b'\x01\x0212'))[2:-1]  ==>  01023132
字节串转16进制数组: [hex(x) for x in bytes(b'\x01\x0212')]  ==>  ['0x1', '0x2', '0x31', '0x32']

 

 
内存16进制转字符串

offset = binascii.unhexlify(offset)

内存中0x416b34 转为Ak4

 

 

aaaaaaaaaaaaa