C#将hex转换为ip

时间:2009-08-30 22:54:05

标签: c# visual-studio hex ip

我有4a0e94ca等格式的十六进制值,我需要将它们转换为IP,我怎么能在C#中做到这一点?

3 个答案:

答案 0 :(得分:14)

如果值代表IPv4地址,您可以使用long.Parse方法并将结果传递给IPAddress constructor

var ip = new IPAddress(long.Parse("4a0e94ca", NumberStyles.AllowHexSpecifier));

如果它们代表IPv6地址,则应convert the hex value to a byte array,然后使用this IPAddress constructor overload构建IP地址。

答案 1 :(得分:3)

好吧,请采用以下格式的IP格式:

192.168.1.1

要将它组合成一个数字,你可以将每个部分或它们放在一起,同时将它移到左边,8位。

long l = 192 | (168 << 8) | (1 << 16) | (1 << 24);

因此,您可以针对您的号码撤消此流程。

像这样:

int b1 = (int) (l & 0xff);
int b2 = (int) ((l >> 8) & 0xff);
int b3 = (int) ((l >> 16) & 0xff);
int b4 = (int) ((l >> 24) & 0xff);

- 编辑

其他海报可能在C#中采用“更清洁”的方式,所以可能在生产代码中使用它,但我认为我发布的方式是学习IP格式的好方法。

答案 2 :(得分:2)

检查C# convert integer to hex and back again

    var ip = String.Format("{0}.{1}.{2}.{3}",
    int.Parse(hexValue.Substring(0, 2), System.Globalization.NumberStyles.HexNumber),
    int.Parse(hexValue.Substring(2, 2), System.Globalization.NumberStyles.HexNumber),
    int.Parse(hexValue.Substring(4, 2), System.Globalization.NumberStyles.HexNumber),
    int.Parse(hexValue.Substring(6, 2), System.Globalization.NumberStyles.HexNumber));