Skip to content

Instantly share code, notes, and snippets.

@pessom
Created February 10, 2018 16:39
Show Gist options
  • Save pessom/622e8154d138a24b1be71041088f7791 to your computer and use it in GitHub Desktop.
Save pessom/622e8154d138a24b1be71041088f7791 to your computer and use it in GitHub Desktop.
Преобразование ip/network в hex
def ip2hex(cidr, router):
addr, mask = cidr.split("/")
mask = int(mask)
addr = [("%2s" % hex(int(i))[2:]).replace(" ", "0") for i in addr.split(".") if i != "0"]
parts = mask / 8 - len(addr)
if mask % 8 > 0:
parts += 1
if parts > 0:
for i in range(int(parts)):
addr.append("00")
r = []
for i in router.split("."):
r.append(("%2s" % hex(int(i))[2:]).replace(" ", "0"))
addr.insert(0, hex(mask)[2:])
return "".join(addr), "".join(r)
def routes2hex(routes):
routers = []
for cidr, router in routes.items():
a, r = ip2hex(cidr, router)
routers.append(a)
routers.append(r)
return "0x%s" % ("".join(routers).upper())
print(routes2hex({"195.82.146.0/24": "10.22.21.245"}))
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment