这是一个有点奇怪的问题。我需要将整数id(例如123456)转换为b'123456'格式的字节。我没有实际转换为字节,但我只是将格式更改为一个字节并被解释为一个。所以我真的需要做以下事情:
10 = b'10'
20 = b'20'
30 = b'30'
等等。我无法转换为字符串,因为我需要结果以字节为单位,我不能进行实际的字节转换,因为bytes([10]) == b'\n'
(而不是b'10'
)。
非常感谢任何有关强制翻译的帮助或建议!!
答案 0 :(得分:5)
将int
转换为str
,然后将.encode
转换为bytes
:
>>> x = 123456
>>> bs = str(x).encode('ascii')
>>> bs
b'123456'
答案 1 :(得分:1)
考虑10
,20
和30
实际上是什么。当然,它们是数字,但10
只是实际数字的decimal representation。通常,单个数字有许多不同的表示形式。例如,0xA
,0o12
和0b1010
是在其十进制表示中以10
写入的相同数字的不同表示。
首先,您应该考虑如何获得数字的十进制表示。幸运的是,这很容易,因为十进制表示是数字的一般默认值。因此,您只需通过调用str()
function:
>>> str(10)
'10'
>>> str(20)
'20'
一旦你这样做,你就会得到一个字符串,其中包含你的号码的正确表示。所以剩下的就是询问如何将 string 转换为bytes
对象。在Python 3中,bytes
对象只是一个字节序列。因此,为了将字符串转换为字节序列,您必须决定如何表示字符串中的每个字符。此过程称为编码,使用str.encode()
完成。对于ASCII范围内的字符,实际编码并不重要,因为它在所有常见编码中都是相同的,因此您可以坚持使用默认的UTF-8:
>>> '10'.encode()
b'10'
>>> '20'.encode()
b'20'
所以现在你拥有了所需的一切。只需将这两件事结合起来,您就可以将您的数字转换为其十进制表示的bytes
对象:
>>> str(10).encode()
b'10'
>>> str(20).encode()
b'20'