c++中一个long类型数据转换成IP地址

 我来答
御含灵9r
2013-02-21 · TA获得超过4157个赞
知道大有可为答主
回答量:3007
采纳率:0%
帮助的人:2674万
展开全部
C++中,反过来,如果要把一个这种运算完以后的二进制数字直接生成一个IP地址的字符串的话,可以用下面这个函数。
inet_ntoa()将网络二进制的数字转换成网络地址
相关函数 inet_addr,inet_aton
表头文件
#include <sys/socket.h>
#include <netinet/in.h>
#include <arpa/inet.h>
定义函数 char * inet_ntoa(struct in_addr in);
函数说明 inet_ntoa()用来将参数in所指的网络二进制的数字转换成网络地址,然后将指向此网络地址字符串的指针返回。
返回值 成功则返回字符串指针,失败则返回NULL。
结构in_addr定义如下
struct in_addr
{
unsigned long int s_addr;
};
4) 代码例子:
unsigned long int ip = inet_addr(ipString.c_str());
in_addr subnetIp;
subnetIp.s_addr = ip &Mask;
subnetIpAddr = inet_ntoa(subnetIp);
5) 说明:
空雪梦见
2013-02-21 · TA获得超过5597个赞
知道大有可为答主
回答量:2522
采纳率:75%
帮助的人:1191万
展开全部
声明一个联合体 union { unsigned char b[4]; long l; };
把long塞进去,把四个byte取出来,ok。
注意网络地址字节顺序和主机地址字节顺序:前者是big-endian,后者在普通的个人计算机上是little-endian。
比如127.0.0.1 是 0x0100007f, 存入l后,b的值是 {127, 0, 0, 1}
追问
c++中使用WINSOCK控件,调用Accept(ID);ID 是long类型的,如果它是代表IP地址,那如何用代码转换成IP地址?
追答
啊?控件?我不用MFC,平时直接调用api的,不晓得什么控件……
api里面没见过ID这东西,它自己封装以后抽象出来的什么东西吧
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式