如何将2进制转换成10进制的??

张大宝 无业游民  2004-12-28 11:30:26
如上,如何将127.0.0.1这个IP地址转换成16进制的

WCHAR wszHost[128];

然后把转化的值赋给
wszHost

请高手指导
...全文
206 点赞 收藏 9
写回复
9 条回复
张大宝 2004年12月28日
我用directplay做网络通信。
我声明了WCHAR wszHost[128];用来存放IP地址
wchar是16位的Unicode,我的想法是需要将127.0.0.1转化为16进制,然后赋给wszHost。
用CreateHostAddress(wszHost )接收

原来的工程是用wscanf(L"%ls", wszHost);从键盘读取的,我想给固定为127.0.0.1
按照我的思路,现在遇到的问题就是如何将127.0.0.1转化。

谢谢各位老大。请帮忙。成功后源码可以发给大家,directplay解决NAT穿透防火墙的程序。
回复 点赞
类库 2004年12月28日
0x7F.0.0.1
转成这样的??
回复 点赞
CMyMfc 2004年12月28日
搞不清楚你的意思
可以试试inet_addr()
回复 点赞
张大宝 2004年12月28日
回复 点赞
张大宝 2004年12月28日
看不懂....不好用。不过还是谢谢楼上
回复 点赞
liem 2004年12月28日
下面的例子不知对你是否有帮助
#include <stdio.h>
union add{
struct {
unsigned d1:8,d2:8,d3:8,d4:8;
}d;
unsigned char ch[4];
};
void main()
{
add x;
char buffer[]="127.0.0.1";
sscanf(buffer,"%u.%u.%u.%u",&(x.ch[0]),&(x.ch[1]),&(x.ch[2]),&(x.ch[3]));
printf("%x %x %x %x\n",x.d.d1,x.d.d2,x.d.d3,x.d.d4);
}
回复 点赞
张大宝 2004年12月28日
差不多了,我也认为就是如何标准化处理的问题
开始是wscanf(L"%ls", wszHost);来的IP地址,wscanf直接就把标准化的IP地址给了wszHost
但是把wszHost打印出来还是127.0.0.1

C语言中用什么函数实现类似功能??
回复 点赞
xdspower 2004年12月28日
127.0.0.1
对应于
0111 1111 0000 0000 0000 0000 0000 0001

很好处理的,你按.分段,每个段实际就是2位16进制,一共就是8位16进制了,而且每个段本身就是整数的,可以直接用(在计算机内部整数都是2进制,十进制,十六进制仅仅是显示处理的结果不同)

其实你的问题是怎么标准化处理IP地址表示,也就从手工输入(其他来源)的信息表示转化为标准化的表示。
回复 点赞
张大宝 2004年12月28日
顶顶,开源阿。
回复 点赞
发动态
发帖子
C语言
创建于2007-09-28

3.2w+

社区成员

24.0w+

社区内容

C语言相关问题讨论
社区公告
暂无公告