python - Python 字节到字符串到字节
问题描述
我知道以前有人问过类似的问题,但还没有答案。
我制作了一个字节字符串:
salt = os.urandom(16)
它给出了类似的内容:
b'w\x05\xce^f\xdcbM\xe9\xb8c\x8b\x98\xd2\n\x11'
我需要将此提供给用户,以便他们可以复制和粘贴,将其放置在文本文档或任何地方,然后稍后将其粘贴回终端。
简而言之。我需要将其转换为字符串。然后回到它的编码。
我已经尝试salt.decode(encoding="utf-8")
了许多变体,它们都给了我某种形式的UnicodeDecodeError: 'utf-8' codec can't...
,唯一似乎有效的变体是"".join(map(chr, salt))
,但我不知道如何扭转这种情况。
提前致谢。Ps 我正在使用 Python 3
解决方案
python 模块binsascii
很可能是您需要的。例子:
>>> import os
>>> salt = os.urandom(16)
>>> import binascii
>>> binascii.b2a_hex(salt)
'9df7cc8d135fb9f115e166e140153217'
>>> binascii.a2b_hex(binascii.b2a_hex(salt))
'\x9d\xf7\xcc\x8d\x13_\xb9\xf1\x15\xe1f\xe1@\x152\x17'
许多其他编码也可用。
推荐阅读
- php - 突然出现的字符串数组错误消息如何更正?
- python-3.x - 如何搜索模式并提取其背后的值
- jmeter - 无法使用 bsh.shared 在 JMeter 中的线程组之间共享数组
- python - 如何注释下图?
- reactjs - 使用 useMutations [Apollo/React hooks] 重定向后 useQuery 返回 undefined
- bash - 如何在 Git bash 中打开当前目录
- three.js - 无法让 Bloompass 和 EffectComposer 在 Three.js 中一起工作
- node.js - Mongodb With Nodejs我收到错误“需要'cursor'选项,除了带有解释参数的聚合”
- c# - C# (.NET Core 2.0) 中的动态类型字段和分配
- matlab - 如何在给定纬度数据的二维地图上绘制轨迹