Python 进制转换
1、Oct()、hex()、bin(),允许把整数转换为其他进制的字符串
例子:
>>>oct(64),hex(64),bin(64)
('0100', '0x40', '0b1000000')
Oct函数会将十进制数转换为八进制数,hex函数会将十进制数转换为十六进制数,而bin函数会将十进制转换为二进制
2、int()函数会将一个数字的字符串变换为一个整数(十进制),并可以通过定义的第二个参数来确定变换前的数字的进制
>>> int('64'),int('100',8),int('40',16),int('1000000',2)
(64, 64, 64, 64)
3、也可以使用字符串格式化方法调用和表达式将一个整数转换成八进制数和十六进制数的字符串
>>> '%o,%x,%X' %(64,255,255)
'100,ff,FF'
例子,要实现将data[0]、data[1]视为一个整体的数,data[0]为高位。使该数加上某个值。
>>> data=[0x10,0x78]
>>> data1=hex(data[0]*256+data[1]+3)
>>> data1
'0x107b'
>>> data2=data1[2:4]
>>> data3=data1[4:6]
>>> data2,data3
('10', '7b')
>>> data[0]=int(data2,16)
>>> data[1]=int(data3,16)
>>> data
[16, 123]
但如何使结果为data=[0x10,0x7b]? Hex()转换是转换成了字符串。
十进制、十六进制、二进制应只是显示格式。Data是作为往外发的数据包中的数据,这样表示就可以了。往外发还需要进行如下转换:
t2=''
for x in data:
t1=struct.pack("B",x)
t2=t2+t1