如何在Python 2.x中对字节执行算术运算?

时间:2014-03-23 17:56:33

标签: python python-2.7

给定任意数量的字节(作为二进制字符串),向/从字节集添加或减去数字并获取新的字节集的最佳方法是什么?

示例(我正在寻找add的良好实现):

>>> add('\xFF' * 10, 1)
'\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'

(给定10个字节,值为255,添加一个将返回11个字节,其中第一个值为1,其余值为0)

2 个答案:

答案 0 :(得分:1)

Python可以做任意长度的整数数学

>>> a = 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
>>> print hex( a+1 )
0x10000000000000000000000000000000000000000000000000000000000000000L
>>> b = (1 << 8*32) -1
>>> print hex(b)
0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffL

答案 1 :(得分:0)

这是我能想到的最简单的解决方案。我希望有一个更好的方式:

def add(bytes, value):
  x = '%x' % (long(bytes.encode('hex'), 16) + value)
  return ('0' + x if len(x) & 1 else x).decode('hex')