目录
1. 常用函数整理
hex() - 数字>字符串
解释
将数字转换为十六进制的字符串
input >> print(hex(100))
output >> 0x64 # type:str
输入&输出
type | 参数 | 说明 |
---|---|---|
input | number | int类型数值 |
output | output | 16进制字符 |
bytes() - 字符串>字节流
解释
将字符串转化为字节流
input >> print(bytes('test', encoding='utf-8'))
output >> b'test' # type:bytes
输入&输出
type | 参数 | 说明 |
---|---|---|
input | string | 输入字符串 |
input | encoding | 编码格式,如utf-8 |
output | output | bytes,如b’\xff\xff’ |
2. 常用案例分析
int转hex字符串,hex字符串转int
# int -> hex str
number = 13
hex_str = hex(number).replace('0x', '')
print(hex_str) # output: 0xd
# hex str -> int
int_number = int(hex_str, 16)
print(int_number) # output: 13
int 转 hex字符串,hex字符串转bytes
number = 12 + 13
hex_str = hex(number).replace('0x', '')
print(bytes.fromhex(hex_str)) # output: b'\x19'
注意事项
1. bytes.fromhex()转换str需要满两位16进制(8 bits)否则会报错
number = 1
hex_str = hex(number).replace('0x', '') # 0x1
print(hex_str) # output: 1
print(bytes.fromhex(hex_str))
# output:
# 1
# Traceback (most recent call last):
# File "test.py", line 12, in <module>
# print(bytes.fromhex(hex_str))
# ValueError: non-hexadecimal number found in fromhex() arg at position 1
解决方案:
在前面填充0补满位数
def fitzero(str, bits):
length = len(str)
if length < bits:
for i in range(bits - length):
str = '0' + str
return str
number = 1
hex_str = hex(number).replace('0x', '')
print(bytes.fromhex(fitzero(hex_str, 4)))
# output: b'\x00\x01'
字节流(bytes)拼接
使用+符号拼接,类似与str。与str转过来的bytes需要先选择一种编码格式进行编码
content = headCode + length_bytes + MSG_Heart_Ack_Msg_id + Crc_test + Reserved_test + bytes(json_str, encoding='utf-8')