bytes的16进制输出
- bytes的16进制输出没有对应的函数实现,需自己编写:
def print_hex(bytes):
l = [hex(int(i)) for i in bytes]
print(" ".join(l))
bytes校验和计算
- sum(bytes)
- 取6位,sum(bytes) & 0x3f
- 然后加上0x30(注意加上括号):(sum(bytes) & 0x3f) + 0x30
原因:位运算符优先级比加减乘除运算符优先级低,所以必须利用括号将其计算优先级提高
输出整数num的16进制数
- print(‘0x%x’%num);其中%x表示输出表达式为16进制数
def print_hex(bytes):
l = [hex(int(i)) for i in bytes]
print(" ".join(l))
def print_hex(bytes):
l = [hex(int(i)) for i in bytes]
print(" ".join(l))
aa = b'A40B40C70D70E90F90'
print_hex(aa)
bb =sum(aa)
print(bb)
bbb = bb&0x3f
print('bbb = ',bbb)
print(type(bbb))
#cc = bb&0x3f + 0x30
cc = (bb&0x3f) + 0x30
print('cc = ',cc)
dd = chr(cc)
print('dd = ',dd)
ee=ord(dd)
print('0x%x'%ee)
输出:
0x41 0x34 0x30 0x42 0x34 0x30 0x43 0x37 0x30 0x44 0x37 0x30 0x45 0x39 0x30 0x46 0x39 0x30
1021
bbb = 61
<class 'int'>
cc = 109
dd = m
0x6d