首页 > 解决方案 > s.encode("hex") 和 binascii.hexlify(s) 是否等效?

问题描述

两者似乎都在字符串的十六进制值的字符串表示形式和字符串本身之间进行转换binascii.(un)hexlify().en(de)code("hex")我看到的唯一区别是需要导入 binascii 模块。

我对使用十六进制表示真的很陌生,所以我想问一下这些是否真的等效,或者是否有一些我不知道的更深层次的东西。

以下两种情况都发生了 return True,但这并不意味着它们总是等价的。

'hello'.encode("hex")      == binascii.hexlify('hello')         # either returns '68656c6c6f'

'68656c6c6f'.decode("hex") == binascii.unhexlify('68656c6c6f')  # either returns 'hello'

编辑:根据@sideshowbarker 的评论,这个答案说:

在 Python 3 中,您不能再对 8 位字符串调用 encode(),因此十六进制编解码器变得毫无意义并被删除。

这些在 Python-2.7 中仍然等效吗?我实际上不知道如何生成 7 位和 8 位字符串,所以我不确定如何自己测试。

标签: pythonstringpython-2.7

解决方案


推荐阅读