Monthly Archives: August 2008

[geek stuff] integer to ip address

Mai acu vreo saptamana asa, vine un gigel si intreaba pe NANOG cum poate converti un integer la o adresa IP, de exemplu din 1089055123 sa faca 64.233.169.147. trecand pe langa modalitatea matematica de a face aceasta conversie, o gramada de oameni au venit cu idei diferite despre cum poti realiza asta in diverse limbjae de programare, de la shell scripting la postscript. Enjoy!

bash

bash# inttoip(){ echo $[$1>>24].$[($1>>16)&255].$[($1>>8)&255].$[$1&255]; }
bash# inttoip 1089055123
64.233.169.147

bc

$ bc
bc 1.06
Copyright 1991-1994, 1997, 1998, 2000 Free Software Foundation, Inc.
This is free software with ABSOLUTELY NO WARRANTY.
For details type `warranty’.
obase=256
1089055123

064 233 169 147

shell

# ping -c 1 1089055123 | head -n 1 | awk ‘{{{print $3}}}’ | sed ‘s/((.*))/1/’
64.233.169.147

REXX

PARSE VALUE D2X(ARG(1)) WITH a 3 b 5 c 7 d .
SAY X2D(a)”.”X2D(b)”.”X2D(c)”.”X2D(d)

PHP

echo long2ip(‘1089055123’);

C

#include <stdio.h>
main(int argc, char *argv[])
{
union {
unsigned int i;
unsigned char c[4];
} ip;
int i = 0;
ip.i = 1089055123;
/* endian-neutral iteration: */
printf(“%d.%d.%d.%dn”, ip.c[i++], ip.c[i++], ip.c[i++], ip.c[i++]);
return 0;
}

Perl (two liner)

sub ntoa_in_one_line { join(“.”, unpack(“CCCC”, pack(“N”, $_[0]))); }
print ntoa_in_one_line(1089055123) . “n”;

awk

dec2ip
awk ‘{ print int($1 / 16777216) “.” int($1 % 16777216 / 65536) “.” int($1 % 65536 / 256) “.” int($1 % 256) }’

ip2dec
awk ‘{ split($1, a, “.”); print a[1]*16777216 + a[2]*65536 + a[3]*256 + a[4] }’

Ruby

require “ipaddr”
print “#{IPAddr.new(167772215,Socket::AF_INET)}n”

Perl (one liner)

$ perl -e ‘use IO::Socket; print inet_ntoa(pack(“N”,2066563929)).”n”;’
123.45.67.89

ITS TECO

1089055123u14<q1&377.j46i0jq1/400.u1>d$$

PostScript (in cazul in care vreti sa faca imprimanta calculele)

##### BEGIN of ntoa.ps #####
%!
/ntoa {
3 { dup 256 idiv exch 256 mod exch } repeat 256 mod
} def

/printa {
3 string cvs show 3 { (.) show 3 string cvs show } repeat
} def

/Helvetica findfont 36 scalefont setfont 36 444 moveto

1089055123 ntoa printa

showpage
###### END of ntoa.ps ######

Fun, ain’t it, no ?

donsoara -> doamna

Da, deci, am comis-o din nou si-am mai ajutat o donsoara sa se faca doamna.

Postul asta e asa oarecum interactiv, ca e co-editat si cu doamna in cauza, in ideea de a impartasi si prima impresie de cand si-a luat noul statut. Drept urmare, la magica intrebare “Si cum te simti acu, ca esti doamna ?” vine si raspunsul “Inca mai doare umpic”.

sin & co.

P.S.: /me very proud of myself to have done another good deed O:-)

baneasa shopping city

No sa nu raman ultimu fraier din Bucuresti, ma dusei si io azi la Baneasa Shopping City sa vad si io minunatia, ca tot ajunsei la Otopeni. E mare. Si cam atat. Seamana un pic cu Garden State Plaza. Preturile se pare sa sunt doar pentru aia de au vile in jur. Come on, 400RON pentru o camasa la Tommy Hilfiger sau o bluza la Lacoste ? Cand alea costa 60-120USD. Inteleg ca tre sa le importi and shit, da de la 150-260RON pana al 400+ e o diferenta destul de sesizabila. In rest the usual crap: multe magazine de haine, de data asta orecum asezate pe brand-uri. Stiam ca aici e Peek & Cloppenburg si am zis si io sa vad ce si cum, ca’n VIena Shopping City Sud chiar aveau lucruri misto la preturi decente. Well, aici ghinion. Tot mari preturile. Pana si sosetele erau scumpe.

Burger King are acelasi gust ca’n state si Whopper-ul e la fel. Macar atata lucru. Cola in schimb are un gust tare ciudat la astia.

Cu ocazia asta bagai si io tura rapida prin IKEA (tot din motivul mentionat mai sus) si macar vizita asta fu cu noroc ca-mi luai si io prosoape de baie ca unu s-a stricat si alalalt e pe cale sa si nu e bine sa ma trezesc ca dupa ce fac dus n-am cu ce sa ma sterg si sa ma apuc sa topai asa ud prin casa dupa feon.

IKEA e interesant de vizitat, da duda aia de mall din Baneasa nu prea. Doar daca simti nevoia sa o arzi aiurea intr-un loc trendy.

What can I say, fun day. Cu exceptia unui bou de mi-a taiat calea si era sa-l pleznesc.