1

C#で完了するタスクがあります。を持っています:

IPアドレス:192.168.1.57およびサブネットマスク:255.255.0.0

サブネット番号を見つける必要があります。この場合は192.168.0.0になります。

ただし、 System.Netライブラリを使用せずにC#でこれを実行できる必要があります(プログラミングしているシステムはこのライブラリにアクセスできません)。

プロセスは次のようになります。

1)IPアドレスをオクテットに分割する

2)サブネットマスクをオクテットに分割する

3)サブネット番号オクテット1=IPアドレスオクテット1とサブネットマスクオクテット1

4)サブネット番号オクテット2=IPアドレスオクテット2とサブネットマスクオクテット2

5)サブネット番号オクテット3=IPアドレスオクテット3とサブネットマスクオクテット3

6)サブネット番号オクテット4=IPアドレスオクテット4とサブネットマスクオクテット4

7)サブネット番号オクテット1+に参加します。+サブネット番号オクテット2+。+サブネット番号オクテット3+。+サブネット番号オクテット4

8)出来上がり!

しかし、私のC#はかなり貧弱です。誰かが役立つC#の知識を持っていますか?

4

2 に答える 2

5

これにより、説明した手順が完​​了するはずです。

string ipAddress = "192.168.1.57";
string subNetMask = "255.255.0.0";

string[] ipOctetsStr = ipAddress.Split('.');
string[] snOctetsStr = subNetMask.Split('.');

if (ipOctetsStr.Length != 4 || snOctetsStr.Length != 4)
{
   throw new ArgumentException("Invalid input strings.");
}

string[] resultOctets = new string[4];
for (int i = 0; i < 4; i++) 
{
    byte ipOctet = Convert.ToByte(ipOctetsStr[i]);
    byte snOctet = Convert.ToByte(snOctetsStr[i]);
    resultOctets[i] = (ipOctet & snOctet).ToString();
}

string resultIP = string.Join(".", resultOctets);
于 2011-12-16T19:22:35.957 に答える
1

私のVBコードを許してください、しかしそれはほとんど同じです:

    Dim foo As Net.IPAddress = Net.IPAddress.Parse("192.168.1.57")
    Dim bar As Net.IPAddress = Net.IPAddress.Parse("255.255.0.0")

    Dim fooA() As Byte = foo.GetAddressBytes
    Dim barA() As Byte = bar.GetAddressBytes

    Array.Reverse(fooA)
    Array.Reverse(barA)

    Dim fooNum As Integer = BitConverter.ToInt32(fooA, 0)
    Dim barNum As Integer = BitConverter.ToInt32(barA, 0)

    Dim netNum As Integer = fooNum And barNum
    Dim netNumA() As Byte = BitConverter.GetBytes(netNum)
    Array.Reverse(netNumA)

    Dim subNet As New Net.IPAddress(netNumA)
于 2011-12-16T18:08:04.650 に答える