Python 2.7 (r27:82525, Jul 4 2010, 09:01:59) [MSC v.1500 32 bit (Intel)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> n = 65539
>>> result = ''
>>> while n:
... result = chr(n & 0xFF) + result
... n >>= 8
...
>>> result
'\x01\x00\x03'
>>> import sys; sys.byteorder
'little'
>>>
使用
struct
和itertools
的解决方案:我们可以使用一个简单的字符串条来删除
itertools
:或者甚至使用递归函数删除
struct
:如果使用的是Python2.7或更高版本,则可以使用
bit_length
方法将长度舍入到下一个字节:否则,您可以只测试整个字节数,如果需要,可以在开始时用零字节填充:
像这样的东西。未测试(直到下次编辑)。对于Python 2.x,假设n>;0。
编辑:已测试。
如果您不阅读手册,但喜欢使用bitbashing,而不是
divmod
开玩笑,请尝试以下操作:编辑2:如果您的数字相对较小,则以下可能更快:
编辑3:第二个方法不假定int已经是bigendian。以下是在一个臭名昭著的小印度环境中发生的事情:
相关问题 更多 >
编程相关推荐