不合理输出编解码器.decode()

2024-04-26 11:40:46 发布

您现在位置:Python中文网/ 问答频道 /正文

我最近一直在玩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')

但我觉得这是一个肮脏的黑客。你知道吗


Tags: 模块对象编码len字节bytes编解码器ascii
1条回答
网友
1楼 · 发布于 2024-04-26 11:40:46

编解码器的行为记录在案,目的是使(可能)二进制数据的文本表示。你知道吗

如果要使用ascii将字符“a”转换为该字符的字节表示形式,则不需要编解码器模块;只需使用bytes内置代码即可。你知道吗

>>> bytes('a','ascii')
b'a'

如注释所述,b'a'等于b'\x61'

相关问题 更多 >