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

0 投票
2 回答
2274 浏览
提问于 2025-04-17 23:33

假设你有一串二进制的字节数据,现在你想要对这些字节加上或减去一个数字,最后得到新的字节数据,最好的方法是什么呢?

举个例子(我想找一个好的 add 实现):

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

比如说,假设你有10个字节,每个字节的值都是255,如果你给它加1,那么你会得到11个字节,第一个字节的值变成1,其余的字节值都是0。

2 个回答

0

Python可以进行任意长度的整数运算。

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

这是我能想到的最简单的解决办法。不过我希望还有更好的方法。

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

撰写回答