Misc. experiments in groovy
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

36 lines
710 B

def packAddr(symbolic) {
packd = 0
symbolic.split(/\./).eachWithIndex { b, i ->
packd |= (b as Long) << (8*(3-i))
}
return packd
}
def packIP(symbolic) {
i = 0
symbolic.split(/\./).inject(0) { p, b ->
p |= (b as Long) << (8*(3-(i++)))
}
}
def packIt(symbolic) {
symbolic.split(/\./)*.toLong().inject([p:0,i:0]) { m, b ->
[p: m.p |= b << (8*(3-m.i++)), i: m.i]
}.p
}
def unpackIt(packed) {
(0..3).collect(new ArrayList()) { i ->
packed >>> (8*(3-i)) & 255
}.join('.')
}
def addr = '198.50.24.68'
def pckd = 3325171780
println packIt(addr)
println unpackIt(pckd)
[addr.split(/\./),[24,16,8,0]].transpose().collect(new HashSet()) { m ->
(m[0]as Long) << m[1]
}.sum()