替换结构的包方法



我有以下代码片段:

def digest(self):
mdi = self._counter & 0x3F
length = struct.pack('!Q', self._counter<<3)
if mdi < 56:
padlen = 55-mdi
else:
padlen = 119-mdi
r = self.copy()
r.update('x80'+('x00'*padlen)+length)
return ''.join([struct.pack('!L', i) for i in r._h[:self._output_size]])

我正在一个不使用CPython的项目上工作,因此我需要用本机实现替换struct库。如何在Python中实现struct.pack方法?

您可以使用int.to_bytes。! 对应大端序,而Q对应长度为8字节且无符号(signed=False)。因此,您可以写

length = (self._counter<<3).to_bytes(8, 'big', signed=False)

最新更新