1、sscanf,格式化输入,可以用于ip地址向无符号长整型转换,较为方便和简单
unsigned long ip2long(char *ip)
{
unsigned long a, b, c, d; //必须使用ul,否则左移24位会越界
sscanf(ip, "%lu.%lu.%lu.%lu", &a, &b, &c, &d);
return ((a << 24) | (b << 16) | (c << 8) | (d));
}
2、sprintf,把格式化的数据写入某个字符串中,即发送格式化输出到 string 所指向的字符串;如下面代码是把长整型数字转换成字符串形式输出
void long2ip(unsigned long ipNum, int post, char *buf)
{
unsigned long tmp[4] = {0};
for (int i = 0; i < 4; i++)
{
tmp[i] = ipNum & 0xff;
ipNum >>= 8;
}
sprintf(buf, "%lu.%lu.%lu.%lu/%d", tmp[3], tmp[2], tmp[1], tmp[0], post);
return;
}