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
Popularity: 10%
