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 + -
显示快捷键?