进制转换(串口数据解析)
十六进制ascii码 ----> 转成字符串
# 必须是byte 类型
binascii.b2a_hex(b"\xf3\x14\xf2").decode()
字符串 --> 十六进制 ascii码
binascii.a2b_hex("f3")
十进制 ---> 十六进制字节
hex(10)
求src32的值
# py3中需要先将字符串转成gb编码
'0x%x' % (binascii.crc32("f3".encode("gb2312")) & 0xffffffff)
字符串 ---> base64 编码
print(binascii.b2a_base64("f3".encode()))
base64编码 ---> 字符串
print(binascii.a2b_base64("ZjM=\n").decode())
字符串 ---> 苹果系统文本数据类型
print(binascii.b2a_hqx("f3".encode()))
苹果系统文本数据类型 ---> 字符串
print(binascii.a2b_hqx("CM-").decode())
中文字符串 ---> qp类型
print(binascii.b2a_qp("中文".encode()))
qp类型 ---> 中文字符串
print(binascii.a2b_qp(b"=E4=B8=AD=E6=96=87").decode())
字符串 ---> uuid字符串
print(binascii.b2a_uu("中文".encode()))
uuid字符串 ---> 字符串
print(binascii.a2b_uu("&Y+BMYI:'\n").decode())
字符串 ---> 二进制,然后按x进行位移位,返回新的字符串
十六进制数字 ---> 十进制数值
# 必须是b"0x" 开头的二进制数据 才是十六进制,才可以用int(,16) 转成十进制
int(b"0x16",16)
八进制数字 ---> 十进制数值
# 必须是b"0o" 开头的二进制数据 才是八进制,才可以用int(,8) 转成十进制
int(b"0o16",8)
十进制 ---> 十六进制
# 1 表示用1个字节表示这个数字,
# big/little
# big 输出的时候都是默认从低地址向高地址进行的,所以高位存储在低地址,首先被输出,低位存储在高地址,最后被输出。
# little 相反
# signed = False 表示无符号,可以表示的范围会大一些0-255 ,signed=True 表示有符号 表示范围-128-127
int(1).to_bytes(1,"big",signed=False)
# b'\x7f'
十六进制---> 十进制
int().from_bytes(b'\xf7',"big",signed=True)
# signed 表示有符号 表示范围为 -128 ---> 127, -129 则报错
int().from_bytes(b'\xf7',"little",signed=True)
# -9
十六进制 --> 十进制 ---> 取反 ---> 二进制
# 高位输出
bin(~int("0xc5", 16) & 0xffffffff)[-8:]
# 低位输出
bin(~int("0xc5", 16) & 0xffffffff)[-8:][::-1]
python防脱发技巧

浙公网安备 33010602011771号