0

我想在这方面得到一些帮助,因为我已经花了几个小时来做​​这件事,但我做不到。我想编写一个带符号整数的函数,并使用 Intel 标准算法将其转换为点 IP 地址,这是一个示例:

IP 地址 192.168.18.188 显示为 -1139627840。要使用 Intel 标准转换此 IP 地址,我将必须执行以下过程:

  1. 将 (-1139627840) 转换为十六进制值。BC12A8C0。
  2. 反转十六进制字节,如下图: CO A8 12 BC
  3. 将字节从十六进制转换为十进制,如下图: 192 168 18 188
  4. IP 地址以以下格式显示:192.168.18.188

任何帮助,将不胜感激。

4

2 回答 2

2

我知道这并不能回答您关于英特尔标准的问题,而只是将其扔在那里(以防您试图重新发明轮子),您可以将 int 转换为 IP,如下所示:

string ip = new IPAddress(BitConverter.GetBytes(-1139627840)).ToString();
于 2012-12-11T15:20:07.883 回答
1

神奇之处在于结合:

  • 运算符>>,将数字中的位向右移动
  • 运算符,按&位与(更常见&&的是逻辑与)

所以是这样的:

var number = -1139627840;
var b1 = number & 255;
var b2 = (number >> 8) & 255;
var b3 = (number >> 16) & 255;
var b4 = (number >> 24) & 255;
Console.WriteLine(string.Format("{0}.{1}.{2}.{3}", b1, b2, b3, b4));
于 2012-12-11T15:02:53.427 回答