的Python 2:使用struct.unpack()
解釋這些最後4個字節爲一個整數:
import struct
lastInt = struct.unpack('<I', mybigvalue[-4:])[0]
lastInt += 1
mybigvalue = mybigvalue[:-4] + struct.pack('<I', lastInt & ((1 << 32) - 1))
'<I'
意味着字節被解釋爲無符號整數,小端。
我也屏蔽了值,以適應32位; ffffffff
將以那種方式溢出至00000000
。
演示:
>>> import struct
>>> mybigvalue = "69dda8455c7dd4254bf353b773304eec".decode('hex')
>>> lastInt = struct.unpack('<I', mybigvalue[-4:])[0]
>>> lastInt += 1
>>> mybigvalue = mybigvalue[:-4] + struct.pack('<I', lastInt & ((1 << 32) - 1))
>>> print mybigvalue.encode('hex')
69dda8455c7dd4254bf353b774304eec
的73304eec
遞增到74304eec
;如果你想改爲73304eed
,請使用big-endian; '>I'
。
你使用Python 2或3嗎? –
這是你的完整代碼嗎? 'ctr'定義在哪裏? 「這不行」是什麼意思?它崩潰了,還是什麼? – Kevin
你是否將這些字節解釋爲小或大的字節序?簽名或未簽名? –