shrimp
驱动牛犊
驱动牛犊
  • 注册日期2003-04-30
  • 最后登录2003-08-29
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
阅读:1870回复:9

怎样将32位无符整数ip 地址格式化成ip串呢?

楼主#
更多 发布于:2003-04-30 09:29
rt,最好格式化成PCHAR类型,在用户态可以用inet_ntoa(),
在IM里,怎么做呢?我想这个问题每位大虾都做过,应该不难回答吧!
 ;)

[编辑 -  4/30/03 by  shrimp]
不要拒绝我... 哈!哈! 给分!
shrimp
驱动牛犊
驱动牛犊
  • 注册日期2003-04-30
  • 最后登录2003-08-29
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2003-04-30 10:45
如从结构里返回
typedef struct _IpHead
{
  unsigned char HeaderLength_Version;
  unsigned char TypeOfService; // Type of service
  unsigned short TotalLength; // total length of the packet
  unsigned short Identification; // unique identifier
  unsigned short FragmentationFlags; // flags
  unsigned char TTL; // Time To Live
  unsigned char Protocol; // protocol (TCP, UDP etc)
  unsigned short CheckSum; // IP Header checksum
  unsigned int sourceIPAddress; // Source address
  unsigned int destIPAddress; // Destination Address

} IpHead, *PIpHead;
如获取的PIpHead->sourceIPAddress;
怎样格式化成xxx.xxx.xxx.xxx
的IP 字符串呢?
能这么做吗?
PCHAR s;
s=(PCHAR)&PIpHead->sourceIPAddress;
其中s[0],~s[3]为IP字节.
这样行吗?
不要拒绝我... 哈!哈! 给分!
shrimp
驱动牛犊
驱动牛犊
  • 注册日期2003-04-30
  • 最后登录2003-08-29
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2003-04-30 14:56
没人理我呀! :)
不要拒绝我... 哈!哈! 给分!
shrimp
驱动牛犊
驱动牛犊
  • 注册日期2003-04-30
  • 最后登录2003-08-29
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地板#
发布于:2003-04-30 18:15
一天了,都没人理我呀!!! :( :( :(
是问题说都不够清楚吗?
其实经过下面转换之后
s=(PUCHAR)&PIpHead->sourceIPAddress;
再DbgPrint(\"%d.%d.%d.%d\",s[0],s[1],s[3],s[4]);
可以打印出xxx.xxx.xxx.xxx格式的IP.
但怎样把它转换成\"xxx.xxx.xxx.xxx\"字符串呢??
那位大侠指点指点,分太少的话,我再开一贴?
不胜感谢!!!
不要拒绝我... 哈!哈! 给分!
ndisworker
驱动牛犊
驱动牛犊
  • 注册日期2002-10-19
  • 最后登录2012-03-31
  • 粉丝0
  • 关注0
  • 积分2分
  • 威望10点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2003-05-01 03:16
Try inet_ntoa(dwIpAddress) or just write a piece of code to do that:
sprintf(str,\"%d.%d.%d.%d\" , ...)

[编辑 -  5/1/03 by  ndisworker]

[编辑 -  5/1/03 by  ndisworker]
shrimp
驱动牛犊
驱动牛犊
  • 注册日期2003-04-30
  • 最后登录2003-08-29
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
5楼#
发布于:2003-05-01 15:44
Try inet_ntoa(dwIpAddress) or just write a piece of code to do that:
sprintf(str,\"%d.%d.%d.%d\" , ...)

[编辑 -  5/1/03 by  ndisworker]

[编辑 -  5/1/03 by  ndisworker]

在驱动里不能用inet_ntoa()!
我现在的问题是将相应的十进制(如192)或十六进制0xC0对应的十进制192转换成\"192\"这样的字符串.
不要拒绝我... 哈!哈! 给分!
shrimp
驱动牛犊
驱动牛犊
  • 注册日期2003-04-30
  • 最后登录2003-08-29
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
6楼#
发布于:2003-05-01 16:44
各位大侠都不肯解答这个问题,看来是,一开始我自己的思搞错了,
在驱动里进行IP 地址的比较应该直接用32位无符地址,而没有必要转换, 而应用程序传给驱动的也应为32位无符地址便可以了,:(致于我为什么会提出这一个问题呢,主要是我在用户态传给内核态的值是字符串。
弄明白了,回头改一改代码吧! :cool: :cool:
不要拒绝我... 哈!哈! 给分!
shrimp
驱动牛犊
驱动牛犊
  • 注册日期2003-04-30
  • 最后登录2003-08-29
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
7楼#
发布于:2003-05-01 16:47
不过我还是希望有高手解决这个问题, 改程序是一件痛苦的事!!
不要拒绝我... 哈!哈! 给分!
huxzjqhh
驱动牛犊
驱动牛犊
  • 注册日期2003-08-02
  • 最后登录2005-04-26
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
8楼#
发布于:2005-04-14 11:14
NdisInitUnicodeString
bingjie
驱动小牛
驱动小牛
  • 注册日期2001-08-15
  • 最后登录2007-11-29
  • 粉丝0
  • 关注0
  • 积分36分
  • 威望5点
  • 贡献值0点
  • 好评度3点
  • 原创分0分
  • 专家分0分
9楼#
发布于:2005-04-19 16:16
自己写个函数,一个字节一个字节转呗,或者你就把字符串倒过来转换为整数好了。
游客

返回顶部