System.Net.IPAddress.Parse 方法的问题

哈哈想做大神 2009-04-22 09:31:22
System.Net.IPAddress.Parse方法的参数应该如何去理解,我给参数传个192.168.0.090就会抛出异常。
我不明白是怎么回事想请教下大家,不要笑我,初学!!呵呵
...全文
1492 17 打赏 收藏 转发到动态 举报
写回复
用AI写文章
17 条回复
切换为时间正序
请发表友善的回复…
发表回复
jlovep 2012-06-30
  • 打赏
  • 举报
回复
好贴,问题解决了
  • 打赏
  • 举报
回复
192.168.0.090中的090是八进制吧?八进制有9当然是异常的
wcg83 2011-06-01
  • 打赏
  • 举报
回复
看看看看
我姓区不姓区 2009-04-23
  • 打赏
  • 举报
回复
[Quote=引用 13 楼 zouahaijun 的回复:]
引用 11 楼 guoyichao 的回复:
解析数字的时候0开头的数字被视为八进制,八进制里是没有8和9的,090当然就会抛异常。

那我现在应该如何做才能将192.168.0.090转换为192.168.0.90呢?
[/Quote]

string str = "192.168.0.090";
byte[] ips = Array.ConvertAll<string, byte>(str.Split('.'), Convert.ToByte);
str = string.Join(".", Array.ConvertAll<byte, string>(ips, Convert.ToString));
IPAddress ip;
if (IPAddress.TryParse(str, out ip))
Console.WriteLine(ip);

哈哈想做大神 2009-04-23
  • 打赏
  • 举报
回复
[Quote=引用 11 楼 guoyichao 的回复:]
解析数字的时候0开头的数字被视为八进制,八进制里是没有8和9的,090当然就会抛异常。
[/Quote]
那我现在应该如何做才能将192.168.0.090转换为192.168.0.90呢?
哈哈想做大神 2009-04-23
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 jietuan 的回复:]
你使用TryParse方法;

那为什么192.168.0.090  !=192.168.0.90 呢? 

你在电脑上面设置IP地址的时候允许你输入“090”吗?
[/Quote]
在我的电脑设置为192.168.0.090后,就直接转换成了192.168.0.90。
我就是想实现这样的效果!但是我用IPAddress.Parse方法一转换就成报异常,不知道是怎么回事,我查了下好像是说IPAddress使用的是IPV6的协议
guoyichao 2009-04-23
  • 打赏
  • 举报
回复
解析数字的时候0开头的数字被视为八进制,八进制里是没有8和9的,090当然就会抛异常。
jietuan 2009-04-23
  • 打赏
  • 举报
回复
你使用TryParse方法;

那为什么192.168.0.090 !=192.168.0.90 呢?

你在电脑上面设置IP地址的时候允许你输入“090”吗?
哈哈想做大神 2009-04-23
  • 打赏
  • 举报
回复
使用IPAddress.Parse方法的时候,我想将192.168.0.010转换成192.168.0.10,但是转换后的结果是192.168.0.8
这个是什么原因呢?大虾们,指导下?
zsuswy 2009-04-22
  • 打赏
  • 举报
回复
那为什么192.168.0.090 !=192.168.0.90 呢?
_______________
因为192.168.0.090 不是一个IP地址,IP地址是一个字符串,并不是一个整个的数字。
我姓区不姓区 2009-04-22
  • 打赏
  • 举报
回复

System.Net.IPAddress ip;
if (System.Net.IPAddress.TryParse("192.168.0.90", out ip))
{
// to do
}
kkun_3yue3 2009-04-22
  • 打赏
  • 举报
回复
[Quote=引用楼主 zouahaijun 的帖子:]
System.Net.IPAddress.Parse方法的参数应该如何去理解,我给参数传个192.168.0.090就会抛出异常。
我不明白是怎么回事想请教下大家,不要笑我,初学!!呵呵
[/Quote]

抛异常是因为你传入的参数不能被正确转换,
可以使用TryParse方法,包含了转换和是否转换成功了
试下以下代码
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Text.RegularExpressions;
using System.Windows.Forms;

namespace ConsoleApplication1 {
class Program {
static void Main( string[] args ) {
System.Net.IPAddress ipAddress;
if( System.Net.IPAddress.TryParse( "192.168.0.90", out ipAddress ) ) {
Console.Write( "转换成功,您转换的IP地址为:" + ipAddress.ToString() );
} else {
Console.Write( "转换失败" );
}
Console.ReadLine();
}
}
}


哈哈想做大神 2009-04-22
  • 打赏
  • 举报
回复
那为什么192.168.0.090 !=192.168.0.90 呢?
oyljerry 2009-04-22
  • 打赏
  • 举报
回复
使用合法的ip地址 192.168.0.10等这种格式
wuyq11 2009-04-22
  • 打赏
  • 举报
回复
IPAddress类:IPAddress 类包含计算机在 IP 网络上的地址。其Parse方法可将 IP 地址字符串转换为 IPAddress 实例。
IPAddress myIP = IPAddress.Parse("192.168.0.1");
参考
烈火蜓蜻 2009-04-22
  • 打赏
  • 举报
回复
一个正确写法IP地址的字符串,经过Parse之后就会生成一个IPAddress对象,里面会存储一个长32位的整型数字,还会存一些协议之类的数据
sun926 2009-04-22
  • 打赏
  • 举报
回复
应当是192.168.0.90,不能输入090这样的数据。

111,126

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Creator Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

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