codec.py 文件源码

python
阅读 37 收藏 0 点赞 0 评论 0

项目:py-multiaddr 作者: sbuss 项目源码 文件源码
def address_bytes_to_string(proto, buf):
    from .util import decode_big_endian_16
    if proto.code == P_IP4:
        return str(IPAddress(int(buf, 16), 4).ipv4())
    elif proto.code == P_IP6:
        return str(IPAddress(int(buf, 16), 6).ipv6())
    elif proto.code in [P_TCP, P_UDP, P_DCCP, P_SCTP]:
        return str(decode_big_endian_16(binascii.unhexlify(buf)))
    elif proto.code == P_ONION:
        buf = binascii.unhexlify(buf)
        addr_bytes, port_bytes = (buf[:-2], buf[-2:])
        addr = base64.b32encode(addr_bytes).decode('ascii').lower()
        port = str(decode_big_endian_16(port_bytes))
        return ':'.join([addr, port])
    elif proto.code == P_IPFS:
        buf = binascii.unhexlify(buf)
        size, num_bytes_read = read_varint_code(buf)
        buf = buf[num_bytes_read:]
        if len(buf) != size:
            raise ValueError("inconsistent lengths")
        return base58.b58encode(buf)
    raise ValueError("unknown protocol")
评论列表
文章目录


问题


面经


文章

微信
公众号

扫码关注公众号