bigint.py
来自「基于DHT的对等协议」· Python 代码 · 共 38 行
PY
38 行
def str2bigint(s): a = map(ord, s) v = 0L for d in a: v = v << 8 v = v | d return vclass bigint(long): def __new__(cls, val = None): if isinstance(val, str): return long.__new__(cls, str2bigint(val)) else: return long.__new__(cls, val) def __hex__(self): return long.__hex__(self).lower()[2:-1] def __str__(self): return hex(self)def pack_bigint(p, v): a = [] while v > 0: a.append(chr(v & 0xFF)) v = v >> 8 # Ensure that remote end will decode as posititive if len(a) and ord(a[-1]) & 0x80: a.append(chr(0)) # Pad out to multiple of 4 bytes. while len(a) % 4 != 0: a.append(chr(0)) a.reverse() p.pack_opaque(''.join(a))def unpack_bigint(u): s = u.unpack_opaque() return bigint(s)
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?