我最近一直在玩codecs
模块,我偶然发现了这个行为,我觉得很奇怪:codecs.encode(b'a', 'hex')
返回b'61'
。你知道吗
我的问题是,为什么?我真的没想到它会返回b'61'
。我在等b'\x61'
。
前者是长度为2(len(b'61') == 2
)的bytes
对象,后者是长度为1(len(b'\x61') == 1
)的bytes
对象。你知道吗
我根本没想到会出现这种行为,因为b'a'
应该是1个字节,当用'hex'
编解码器编码时变成了2个字节。你知道吗
如果要将ASCII字符转换为十六进制编码的bytes
表示形式,您会怎么做?我所做的是:
codecs.decode(hex(ord('a'))[2:], 'hex')
但我觉得这是一个肮脏的黑客。你知道吗
编解码器的行为记录在案,目的是使(可能)二进制数据的文本表示。你知道吗
如果要使用ascii将字符“a”转换为该字符的字节表示形式,则不需要编解码器模块;只需使用
bytes
内置代码即可。你知道吗如注释所述,b'a'等于b'\x61'
相关问题 更多 >
编程相关推荐