如何把IP地址的最后一位加1

Tom_殇子 2012-12-13 10:26:45
我有个ip地址: 192.168.1.100 ;
char ip[16]=“192.168.1.100”;
我想把最后一位加1 变成 192.168.1.101;
请问在代码中怎么实现?
...全文
632 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
nevil 2012-12-13
  • 打赏
  • 举报
回复
网络字节序是big endian,intel处理器是little endian,所以192.168.1.100 inet_addr后在处理器看来 就是0x6401A8C0,正好是倒过来的

比较正规的做法是你在ipp+=1之前先调用uint32_t ntohl(uint32_t netlong)把网络字节序转化成主机字节序,在ipp+=1之后调用inet_ntoa之前,再调用uint32_t htonl(uint32_t hostlong)把主机字节序转成网络字节序

这样就无所谓任何处理器都不会出错了
Tom_殇子 2012-12-13
  • 打赏
  • 举报
回复
多谢…… 问题解决…… 但是能不能给我详细讲解一下?
kickxxx 2012-12-13
  • 打赏
  • 举报
回复
字节序问题 ipp += 0x01000000
Tom_殇子 2012-12-13
  • 打赏
  • 举报
回复
我尝试过 unsigned int ipp = inet_addr(ip); ipp+=1; printf("ipp is : %s \n",inet_ntoa(ipp)); 但是打印出来的是: 192.168.1.100 而不是192.168.1.101 请指教啊……
Tom_殇子 2012-12-13
  • 打赏
  • 举报
回复
明白 了…… 多谢……

23,118

社区成员

发帖
与我相关
我的任务
社区描述
Linux/Unix社区 应用程序开发区
社区管理员
  • 应用程序开发区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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