当前位置: 技术问答>linux和unix
如何把IP地址的最后一位加1
来源: 互联网 发布时间:2017-03-26
本文导语: 我有个ip地址: 192.168.1.100 ; char ip[16]=“192.168.1.100”; 我想把最后一位加1 变成 192.168.1.101; 请问在代码中怎么实现? | 字节序问题 ipp += 0x01000000 | 网络字节序是...
我有个ip地址: 192.168.1.100 ;
char ip[16]=“192.168.1.100”;
我想把最后一位加1 变成 192.168.1.101;
请问在代码中怎么实现?
char ip[16]=“192.168.1.100”;
我想把最后一位加1 变成 192.168.1.101;
请问在代码中怎么实现?
|
字节序问题
ipp += 0x01000000
ipp += 0x01000000
|
网络字节序是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)把主机字节序转成网络字节序
这样就无所谓任何处理器都不会出错了
比较正规的做法是你在ipp+=1之前先调用uint32_t ntohl(uint32_t netlong)把网络字节序转化成主机字节序,在ipp+=1之后调用inet_ntoa之前,再调用uint32_t htonl(uint32_t hostlong)把主机字节序转成网络字节序
这样就无所谓任何处理器都不会出错了
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。