进制转换(串口数据解析)

十六进制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]
posted @ 2021-11-12 12:01  河图s  阅读(484)  评论(0)    收藏  举报