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

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

WCHAR wszHost[128];

然后把转化的值赋给
wszHost

请高手指导
...全文
283 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
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
  • 打赏
  • 举报
回复
顶顶,开源阿。

69,368

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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