5

我正在以 int 格式从数据库中读取 IP 地址编号,但我想以 IP 格式显示它们,例如 000.000.000.000

是否可以使用 String.Format 方法?

例如:

string str = String.Format("{0:#,###,###.##}", ips); 
4

5 回答 5

13

如果您使用 System.Net 命名空间中的 IPAddress 对象来解析您的地址,如下所示:

IPAddress ip = IPAddress.Parse(IPStringHere);

然后对该对象使用“ToString()”方法:

string outputString = ip.ToString();

您可以获得一个字符串,该字符串显示以您需要的格式提供的 IP 地址,使用整数和句号。

IPAddress 解析例程将采用字符串 IP 地址,它还将采用 int/long int 格式地址,也允许您解析这两种格式。

作为奖励,如果您使用“TryParse”并将转换放入 if 块中,您还可以在返回字符串之前测试输入格式是否导致正确的 IP 地址,便于输入验证。

于 2013-01-21T03:23:33.223 回答
2

这些 32 位整数是否分别代表整个 IP 地址?如果是这样...

IPAddress ip = new IPAddress((long)ips);
return ip.ToString();

(我不知道为什么构造函数需要很长时间,如果超出 UInt32 的范围,它会抛出异常,所以我认为 UInt32 会更合适。)

于 2011-02-22T06:19:50.947 回答
1

我来寻找相同的答案..但看到没有我写我自己。

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;
}

编辑:啊我看到 int 格式..没关系,不知道你会怎么做....

于 2012-02-17T14:22:59.597 回答
0

像这样的东西?
.Net 4.0

string str = string.Join(".", ips.Select(x => x.ToString()))

早些时候

string str = string.Join(".", ips.Select(x => x.ToString()).ToArray())

这就是说,在两者之间加入一个string[]with .。该数组由ips组成,使用转换为字符串ToString()并使用转换为字符串[]ToArray()

于 2011-02-22T06:13:29.247 回答
0

如果是数组:

string str = String.Format("{0:###}.{1:###}.{2:###}.{3:###}", ips[0], ips[1], ips[2], ips[3]);
于 2011-02-22T06:14:21.927 回答