【问题标题】:How to literally convert string to bytes?如何从字面上将字符串转换为字节?
【发布时间】:2022-01-11 08:01:37
【问题描述】:

我的应用程序中有以下键,虽然是前缀,但它保存为字符串而不是字节 (<class 'str'>)。

b'-----BEGIN RSA PUBLIC KEY-----\nMBgCEQCc5QP2pLttRTltj9QFdn1DAgMBAAE=\n-----END RSA PUBLIC KEY-----\n'

我尝试将 is 转换为字节字符串,使用 bytes() 或 .encode,但两者都返回以下不一样的格式:

b"b'-----BEGIN RSA PUBLIC KEY-----\\nMBgCEQCc5QP2pLttRTltj9QFdn1DAgMBAAE=\\n-----END RSA PUBLIC KEY-----\\n'" <class 'bytes'>

关于如何告诉我的程序直接获取这个字符串并将其作为字节读取的任何线索?

【问题讨论】:

  • 第一个样本已经是一个字节对象,你能澄清一下你想要做什么吗?
  • @Passerby 嘿,虽然是前缀,但它保存为字符串而不是字节,当我使用 type() 函数时,我得到(&lt;class 'str'&gt;)
  • 这能回答你的问题吗? Python convert string literals to strings 虽然问题是关于将字符串文字解析为字符串,但答案适用于解析任何类型的 Python 文字。在您的情况下,您希望将包含字节文字的字符串解析为字节,因此 ast.literal_eval 可以解决问题。
  • 向我们展示一些示例代码,而不仅仅是字符串。
  • 如果您确实有一个包含b'...' 内容的字符串,那么我的建议是:首先避免出现这种情况!找出导致它的原因,然后修复那个!

标签: python byte


【解决方案1】:

您可以使用bytes(string, enc) 函数。

假设您使用的是 utf-8,这应该适用于 python3。

_string = "Some String"
_string_as_bytes = bytes(_string, 'utf-8')

编辑: 但是您拥有的是控制台输出,它显示为b'Some String',但是您将其存储为好像您已经运行了_string = "b'Some String'",因此您需要修剪掉b' 和尾随' 的原始子字符串.

因此,如果您 _string = _string[2:len(_string)-1],那么您将获得删除分隔符的子字符串。控制台将其显示为'Some String',然后您可以像上面一样调用bytes(...)。

猜你喜欢
  • 1970-01-01
  • 2019-06-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-02-26
  • 2021-02-26
  • 2021-03-01
相关资源
最近更新 更多