我从数据库中以int格式读取IP地址数字,但我想以IP格式显示它们,例如000.000.000.000。
使用String.Format方法可以实现吗?
例如:
string str = String.Format("{0:#,###,###.##}", ips);
我从数据库中以int格式读取IP地址数字,但我想以IP格式显示它们,例如000.000.000.000。
使用String.Format方法可以实现吗?
例如:
string str = String.Format("{0:#,###,###.##}", ips);
如果你使用 System.Net 命名空间中的 IPAddress 对象来解析你的地址,代码如下:
IPAddress ip = IPAddress.Parse(IPStringHere);
然后在该对象上使用 "ToString()" 方法:
string outputString = ip.ToString();
您可以使用整数和句点来获取以所需格式显示的IP地址字符串。
IPAddress解析过程将接受一个字符串IP地址,也接受int / long int格式地址,使您能够解析两种格式。
作为奖励,如果您使用“TryParse”并将转换置于if块中,则还可以在返回字符串之前测试输入格式是否导致正确的IP地址,非常适用于输入验证。
这些是代表整个IP地址的32位整数吗?如果是的话...
IPAddress ip = new IPAddress((long)ips);
return ip.ToString();
我不知道为什么那个构造函数需要很长时间,如果超出UInt32的范围,它会抛出异常,所以在我看来使用UInt32更合适。
Usomething
(或它们的别名usomething
,如uint
)类型是不被赞同的。这不符合CLS标准,因为有些语言不区分有符号和无符号(通常只有有符号版本)。IPAddress
是一个.NET框架类,因此必须与所有语言兼容,因此不能使用UInt32
,而应该使用long
。 - xanatos我也在寻找同样的答案,但是既然没有,我就自己写了。
private string padIP(string ip)
{
string output = string.Empty;
string[] parts = ip.Split('.');
for (int i = 0; i < parts.Length; i++)
{
output += parts[i].PadLeft(3, '0');
if (i != parts.Length - 1)
output += ".";
}
return output;
}
像这样的吗?
.Net 4.0
string str = string.Join(".", ips.Select(x => x.ToString()))
早些时候
string str = string.Join(".", ips.Select(x => x.ToString()).ToArray())
这段代码的意思是,将一个由IP地址组成的string[]
数组以.
为分隔符进行拼接。在此之前,需要使用ToString()
方法将每个IP地址转换为字符串,并使用ToArray()
方法将它们转换为string[]
数组。
如果是数组:
string str = String.Format("{0:###}.{1:###}.{2:###}.{3:###}", ips[0], ips[1], ips[2], ips[3]);
int
数组,还是一个字符串或其他类型? - xanatos