Convertire un indirizzo ip da aaa.bbb.ccc.ddd in un numero

Potrebbe essere un’operazione banale per molti di voi che leggono questo blog tuttavia per lo sviluppo di un progetto ho dovuto scrivermi un piccolo convertire che vi allego qui.

La conversione è piuttosto triviale in quanto basta fare il parsing di una stringa abbinato di uno shift di 8 bit per volta partendo ovviamente dal contrario.

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

/**
* IP Address to INT / HEX Converter
* by Eduard Roccatello <eduard@roccatello.it>
*/
int main (int argc, char **argv)
{
int ip_bytes[4];
char *tok;

if (argc < 2)
{
fprintf(stderr, “Usage: iptolong xxx.yyy.www.zzz\n”);
return -1;
}

memset(&ip_bytes, 0, sizeof(ip_bytes));
tok = strtok(argv[1], “.”);
int i = 0;
while (tok != NULL && i < 4)
{
ip_bytes[i] = atoi(tok);
tok = strtok(NULL, “.”);
i++;
}

long ip_long = 0;
for (i = 0; i < 4; i++)
{
ip_long += ip_bytes[3-i] << (i * 8);
}

fprintf(stdout, “int: %u\nhex: %x\n”, ip_long, ip_long);
return 0;
}

Salvate su file e compilate con un banalissimo gcc -o iptolong iptolong.c

Happy hacking :)

Related Posts with Thumbnails

Popularity: 10%

Share this Post:
Digg Google Bookmarks reddit Mixx StumbleUpon Technorati Yahoo! Buzz DesignFloat Delicious BlinkList Furl

No Responses to “Convertire un indirizzo ip da aaa.bbb.ccc.ddd in un numero”

Leave a Reply:

Name (required):
Mail (will not be published) (required):
Website:
Comment (required):
XHTML: You can use these tags: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

Indirizzo per il Trackback