我想将字节转换为 IP 和 PORT

I want to convert bytes to IP and PORT

我想把一个通过网络进来的16进制字节变量转换成IP和Port

例如格式为:

value = (b'\xd3[\xdf\x94:\x98\xd5\xe6J\x9f\xb2\xfb\xd8\x18\xbdDsa')
# Size is random but multiples of 6 all.

type(value) # bytes

我想打印上面名为 value 的变量,如下所示。

>>> func(value)
"211.91.223.148:15000"
"213.230.74.159:45819"

即使我搜索,我也找不到将字节更改为IP和端口的模块。 任何帮助将不胜感激。

test.py:

import ipaddress
import struct

from itertools import islice


N = 6


def func(value):
    it = iter(value)

    while chunk := bytes(islice(it, N)):
        ip, port = struct.unpack("!IH", chunk)
        ip = ipaddress.ip_address(ip)

        print(f"{ip}:{port}")


def main():
    value = b"\xd3[\xdf\x94:\x98\xd5\xe6J\x9f\xb2\xfb\xd8\x18\xbdDsa"
    func(value)


if __name__ == "__main__":
    main()

测试:

$ python test.py
211.91.223.148:15000
213.230.74.159:45819
216.24.189.68:29537