【问题标题】:Python convert string to bytes without changing valuesPython将字符串转换为字节而不更改值
【发布时间】:2020-08-20 07:49:41
【问题描述】:

我有一个字符串,例如:

a = '031000060002043DCCCCCD213B'

我想得到一个像这样的字节:

b'\x03\x10\x00\x06\x00\x02\x04\x3D\xCC\xCC\xCD\x213B'

(最后四个字符我不想拆分)

但是像'3d''21'这样的字符串由于ascii总是被转换为b'='b'!',我不想要什么,怎么解决?

提前致谢!!

【问题讨论】:

  • 这就是当您将字节打印到屏幕上时如何表示的,它们仍然是字节。

标签: python python-3.x string byte


【解决方案1】:

bytes 对象为此提供了一个方便的方法,.fromhex,所以你可以使用:

>>> bytes.fromhex(a[:-4]) + a[-4:].encode()
b'\x03\x10\x00\x06\x00\x02\x04=\xcc\xcc\xcd213B'

【讨论】:

  • 但我不想要的是像在字符串中将'3d'转换为'=',我想要的是直接b'\x3d'
  • @wenqingqiu 这些是完全相等,即b'\x3d' == b'=' 没有“转换”,python bytes 对象只需将可打印的 ascii 字符用于属于其字符串表示形式中的可打印 ascii 范围(即打印时)。
  • 那么我的问题可能是其他问题,但有什么办法让我得到b'\x213b'?还是b'\x213b' == b'!3b'
  • @wenqingqiu 是的,你可以自己尝试一下,b'\x213b' == b'!3b' 会评估为True
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-12-16
  • 2015-03-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-01-19
相关资源
最近更新 更多