在Python中将int转换为“byte”

时间:2017-10-02 21:25:03

标签: python byte

这是一个有点奇怪的问题。我需要将整数id(例如123456)转换为b'123456'格式的字节。我没有实际转换为字节,但我只是将格式更改为一个字节并被解释为一个。所以我真的需要做以下事情:

10 = b'10'
20 = b'20'
30 = b'30'

等等。我无法转换为字符串,因为我需要结果以字节为单位,我不能进行实际的字节转换,因为bytes([10]) == b'\n'(而不是b'10')。

非常感谢任何有关强制翻译的帮助或建议!!

2 个答案:

答案 0 :(得分:5)

int转换为str,然后将.encode转换为bytes

>>> x = 123456
>>> bs = str(x).encode('ascii')
>>> bs
b'123456'

答案 1 :(得分:1)

考虑102030实际上是什么。当然,它们是数字,但10只是实际数字的decimal representation。通常,单个数字有许多不同的表示形式。例如,0xA0o120b1010是在其十进制表示中以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'