我想将字节转换为 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
我想把一个通过网络进来的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