zl程序教程

您现在的位置是:首页 >  Python

当前栏目

python进阶__常用的进制、字符串、字节之间的转换

2023-03-14 09:51:09 时间

整数之间的进制转换:
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']

 

 1 import binascii
 2 import struct
 3 
 4 
 5 def example(express, result=None):
 6     if result == None:
 7         result = eval(express)
 8     print(express, ' ==> ', result)
 9 
10 
11 if __name__ == '__main__':
12     print('整数之间的进制转换:')
13     print("10进制转16进制", end=': ');
14     example("hex(16)")
15     print("16进制转10进制", end=': ');
16     example("int('0x10', 16)")
17     print("类似的还有oct(), bin()")
18 
19     print('\n-------------------\n')
20 
21     print('字符串转整数:')
22     print("10进制字符串", end=": ");
23     example("int('10')")
24     print("16进制字符串", end=": ");
25     example("int('10', 16)")
26     print("16进制字符串", end=": ");
27     example("int('0x10', 16)")
28 
29     print('\n-------------------\n')
30 
31     print('字节串转整数:')
32     print("转义为short型整数", end=": ");
33     example(r"struct.unpack('<hh', bytes(b'\x01\x00\x00\x00'))")
34     print("转义为long型整数", end=": ");
35     example(r"struct.unpack('<L', bytes(b'\x01\x00\x00\x00'))")
36 
37     print('\n-------------------\n')
38 
39     print('整数转字节串:')
40     print("转为两个字节", end=": ");
41     example("struct.pack('<HH', 1,2)")
42     print("转为四个字节", end=": ");
43     example("struct.pack('<LL', 1,2)")
44 
45     print('\n-------------------\n')
46 
47     print('字符串转字节串:')
48     print('字符串编码为字节码', end=": ");
49     example(r"'12abc'.encode('ascii')")
50     print('数字或字符数组', end=": ");
51     example(r"bytes([1,2, ord('1'),ord('2')])")
52     print('16进制字符串', end=': ');
53     example(r"bytes().fromhex('010210')")
54     print('16进制字符串', end=': ');
55     example(r"bytes(map(ord, '\x01\x02\x31\x32'))")
56     print('16进制数组', end=': ');
57     example(r'bytes([0x01,0x02,0x31,0x32])')
58 
59     print('\n-------------------\n')
60 
61     print('字节串转字符串:')
62     print('字节码解码为字符串', end=": ");
63     example(r"bytes(b'\x31\x32\x61\x62').decode('ascii')")
64     print('字节串转16进制表示,夹带ascii', end=": ");
65     example(r"str(bytes(b'\x01\x0212'))[2:-1]")
66     print('字节串转16进制表示,固定两个字符表示', end=": ");
67     example(r"str(binascii.b2a_hex(b'\x01\x0212'))[2:-1]")
68     print('字节串转16进制数组', end=": ");
69     example(r"[hex(x) for x in bytes(b'\x01\x0212')]")
70 
71     print('\n===================\n')

 

 

行到所行处,坐看云起时。股票下跌、金融破产、物是人非、天灾人祸。一辈子能一帆风顺,这是罕见的福气,大多数人都要面对一些坎坷,一些挫折,有时候还是大起大落的挫折,面对这种困境和挑战的时候依靠什么,走在人生的十字路口,要做人生的选择,把自己关在房间里,拿出一张纸,写下所有的利弊,最后完成一次理性的计算。但在人生命运的抉择面前,是无法通过理性计算来面对的,这时候我们被考验的就是心灵的力量,思想的力量。