python - 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 位字符串,所以我不确定如何自己测试。
解决方案
推荐阅读
- nginx - Certbot Https - Nginx - Docker:端口冲突
- nginx - NGINX RTMP 记录始终开启
- javascript - NodeJS - 正则表达式没有按预期工作。\0 被解释为 \u0000
- python - 你如何解决“MatplotlibDeprecationWarning: pie() 的非一维输入当前是挤压()d”?
- linux - 为什么这不起作用?脚本、目录
- javascript - 为什么 React 在直接改变状态时会更新?
- javascript - jQuery - 用于 src 和背景图像的图像上传器
- python - lxml xpath 表达式,用于选择给定子节点下的所有文本,包括他的子节点
- python - 使用 Python 字典处理文本文件并上传到正在运行的 Web 服务实验室
- java - 拆分成对数字的字符串,然后在java中拆分它们中的每一个