Windows 下IP点分十进制和网络字节序的转换
来源:互联网 发布:淘宝直播卖的翡翠a货 编辑:程序博客网 时间:2024/05/22 06:24
博客http://blog.csdn.net/unimen/article/details/6844456给出相关实现,我根据C库的代码,也给出一个:
- #include
- #include
- #include
- #include
- #include
- #include
- /*
- * Ascii internet address interpretation routine.
- * The value returned is in network order.
- */
- unsigned int
- __inet_aton(const char *cp)
- {
- unsigned int val = 0;
- unsigned int tmp = 0;
- char c;
- int base = 10;
- int shift = 32;
- c = *cp;
- for (;;) {//可以给出一个任意长度的字符串;
- tmp = 0;
- for (;;) {//获得'.'分割的每一个字符串的数值;
- if (isdigit(c)) {
- tmp = (tmp * base) + (c - '0');
- c = *++cp;
- } else break;
- }
- shift -= 8;
- tmp <<= shift;
- val += tmp;
- if (c == '.') {
- c = *++cp;
- } else
- break;
- }
- /*
- * Check for trailing characters.
- */
- if (c != '\0' && (!isspace(c)))
- goto ret_0;
- return (htonl (val));//返回网络字节序
- ret_0:
- return (0);
- }
- /* The interface of this function is completely stupid, it requires a
- static buffer. We relax this a bit in that we allow one buffer for
- each thread. */
- static char buffer[18];//作为库函数,正式这个函数不能重入的原因;
- char *
- __inet_ntoa (unsigned int in)
- {
- unsigned char *bytes = (unsigned char *) ∈
- snprintf (buffer, sizeof (buffer), "%d.%d.%d.%d",
- bytes[0], bytes[1], bytes[2], bytes[3]);//网络字节序是小端表示,第一个是byte[0];
- return buffer;
- }
- int main()
- {
- printf("ip :%lu\n",__inet_aton("192.168.1.105 "));
- printf("str:%s\n",__inet_ntoa(__inet_aton("192.168.1.105")));
- return 0;
- }
也可以使用Windows socket API
(1)inet_ntoa() //将网络字节序转换为十分点进制字符串
(2)inet_addr() //将十分点进制字符串转换为网络字节序
例:
unsigned long addr=inet_addr("127.0.0.1");
char * Apddr=inet_ntoa(*(in_addr*)&addr);
in_addr 为网络地址结构体大小为4个字节
0 0
- Windows 下IP点分十进制和网络字节序的转换
- linux网络-点分十进制和网络字节序转换
- 网络字节序 主机字节序 点分十进制ip 相互转换
- IP地址点分十进制格式转换为网络字节序二进制以及八进制十六进制输出
- IP地址点分十进制与网络字节序整数的转化
- 点分十进制与网络字节序之间的相互转换
- inet_ntoa()网络字节序IP转化为点分十进制IP
- 点分十进制IP转换
- 网络字节序变成点分十进制,一个一个字节的输出log
- 【Programming Clip】点分十进制IP和长整型转换
- 点分十进制IP和长整型转换
- 点分十进制IP和长整型转换
- 安卓的点分十进制ip,转换成为int
- Linux下网络IP地址的转换,主机字节顺序和网络字节顺序的转换。
- 点分十进制子网掩码和CIDR的相互转换
- 网络编程基础2-二进制与点分十进制IP转换
- 十进制点分IP转换为32位二进制IP
- 十进制点分IP转换为32位二进制IP
- 什么是Cyclomatic Complexity(圈复杂度)?
- listView和scrollview共存问题
- 语音群呼顺应企业经济的营销发展潮
- Unity3D读取XML内容代码
- AndroidManifest.xml 文件解释
- Windows 下IP点分十进制和网络字节序的转换
- 大卸八块看真相 拆解5款行车记录仪
- shell中$0,$?,$!等的特殊用法
- Oracle 性能相关常用脚本(SQL)
- java面向对象相关概念
- Linux-网桥原理分析
- IOS 开发必备网址
- poj 2112 Optimal Milking(spfa+二分+最大流)
- ios点击产生波纹效果