将任意大小的unsigned long int转换为字节字符串

时间:2016-06-15 16:16:03

标签: string python-2.7 bit-manipulation long-integer

我正在寻找将大型unsigned int转换为字节数组的东西,以便我能够通过串行端口发送它。

在python 3.2中,内置函数to_bytes来转换长整数以返回字节数组。但是这在python 2.7中不可用。同样,python 2.7有一个struct lib,但该库不处理任意大的int。堆栈溢出有类似的question,但是接受的答案是使用pickle。这对我没有帮助,因为我希望在不失去压缩的情况下发送long int。我当然可以迭代int并提出一些定制的东西,但我希望有一些东西可以解决我的繁重工作。

1 个答案:

答案 0 :(得分:1)

使用x格式说明符将其转换为十六进制字符串,如果长度为奇数,则添加前导0,然后将其解码为'hex'以将其转换为字节。不是最快的方式,而是简单。

>>> '{:x}'.format(20L).decode('hex')
'\x14'