def to_bytes(data: str) -> str:
data = data.replace('0x', '\\x')
return str.encode(data, encoding='utf-8').decode()
if __name__ == '__main__':
data = '\x4D\x51\x54\x54'
print(to_bytes(data=data))
str 二进制 互转
def encode(s):
return ' '.join([bin(ord(c)).replace('0b', '') for c in s])
def decode(s):
return ''.join([chr(i) for i in [int(b, 2) for b in s.split(' ')]])
>>>encode('hello')
'1101000 1100101 1101100 1101100 1101111'
>>>decode('1101000 1100101 1101100 1101100 1101111')
'hello'
题外话
pycharm 重构常用快捷键
字符串和 bytes 区别
b''
包含''
或者""
包含bytes.decode()
转换成str
str.encode()
转换成bytes
replace()
...注意事项
bytes.decode()
可能会出错,因为utf-8
等编码可能无法解码一些字节print(bytes)
可以显示正常解码的部分str
和bytes
没有任何关系,不过你可以利用已有的方法将他们进行转换str 转 十六进制
利用 binascii 库,可以将 str 转为 十六进制,不过是保存在 bytes 中,我们如果要处理需要将 bytes 转为 str。
测试代码如下
运行结果
十六进制 转 str
将形如
0x00
和\x00
的字符串编码转换成str
。python 中的 十六进制 是
\x00
, 使用之前得想转成\x00
格式。str 二进制 互转
进制互转
python 中 十六进制 是以 0x \x 开头
八进制是以
0o
开头二进制是以
0b
开头十进制转十六进制,二进制,八进制
十六进制转十进制,八进制,二进制
八进制转十进制,十六进制,二进制
二进制转十进制,八进制,十六进制
我觉得看一下知乎上关于 Python 编码的讨论。https://www.zhihu.com/question/31833164