关于C语言实现longtoip和iptolong的方法

kw123 2008-03-03 01:27:29
现在知道一个IP地址,现在要把它转成LONG数据。或者long数据转换成IP地址。如何实现啊? 我说的是用C语言的。网络上大部分是JAVA实现的
...全文
183 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
kw123 2008-03-05
  • 打赏
  • 举报
回复
unsigned long IPAddr=3232235629;
char buf[20] = "\\0";

sprintf(buf, "%d.%d.%d.%d", (0X000000FF & (IPAddr >> 24)),

(0X000000FF & (IPAddr >> 16)),

(0X000000FF & (IPAddr >> 8)),

(0X000000FF & IPAddr ));
shaoze5 2008-03-03
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 kw123 的回复:]
现在是long为43524353的话,我怎么得到它的IP啊
[/Quote]
如果是这个样子的话,如何分割呢?
比如43.52.43.53
43.5.243.53
这两个是不是都是符合你条件的呢,你想要那一个呢?
ltc_mouse 2008-03-03
  • 打赏
  • 举报
回复
Java转为C似乎不难呀。 不知道下面这样是否是你需要的?

#include <stdio.h>
int main()
{
union {
unsigned char bytes[4];
unsigned long val;
}IPAddr;
IPAddr.val = 43524353;
printf("IP is %d.%d.%d.%d\n", IPAddr.bytes[0], IPAddr.bytes[1], IPAddr.bytes[2], IPAddr.bytes[3]);
return 0;
}
kw123 2008-03-03
  • 打赏
  • 举报
回复
没有人会吗?
kw123 2008-03-03
  • 打赏
  • 举报
回复
现在是long为43524353的话,我怎么得到它的IP啊
shaoze5 2008-03-03
  • 打赏
  • 举报
回复
sorry,错了上面的。
你看是不是这个样子的。

sscanf(IP,"%ld.%ld.%ld.%ld",&l_ip1,&l_ip2,&l_ip3,&l_ip4);


shaoze5 2008-03-03
  • 打赏
  • 举报
回复

sscanf(IP,"%[^.].%[^.].%[^.].%[^.]",&l_ip1,&l_ip2,&l_ip3,&l_ip4);

69,377

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧