2017-02-13 17 views
0

4桁の数字をIPアドレスに変換しようとしています。たとえば、次のように番号をIPアドレスに変換する(v4)

0001 ---> * ---> * .192.111.01

1111 .192.11.01

0111 .192.1.01

0011 ---> * ---> * .196.87.01

3458 ---> * .205.130.01

私は、サブネットマスクが255.255.192.0であると信じています。

私は非常にvb.netでこれを行うための最善の方法に関する提案をいただきありがとうございます。

その他の情報:(。彼らはpingを実行したい物理的なサイトのID)

これにより、ユーザは4桁の番号を入力する簡単なピンガープログラムのためにあるIPアドレス指定スキームは単純であり、 2nd &第3オクテットがサイト番号として使用され、第4オクテットがサイトのデバイスとして使用されます。私はこのスキームを設計しなかったので、なぜvb.netにそれを理解させる方法がわからないのですか?

を、私は非常に、粗である、それを次のようにやって考えた:私が試した何

:しかし、これは唯一の* .192.255.01
Private Sub btnStartPing(sender As Object, e As EventArgs) Handles btnStartPing.Click 

    Dim Octet1 As Integer = * 
    Dim Octet2 As Integer = 192 
    Dim Octet3 As Integer = txtSiteID.text 
    Dim Octet4 As Integer = 01 
    Dim CompleteIP As String = "" 

    CompletIP = Octet1 & "." & Octet2 & "." & Octet3 & "." & Octet4 

    'PING CompleteIP 

end sub 

3.それはオクテットに255を乗り越えた後、私は2つのオクテットの数字を分割する方法がわからないなどのソリューションを働くだろう
 Dim var1 As Integer = Fix(192 + (NumericUpDown1.Value/256)) 
     Dim var2 As Integer = Fix((NumericUpDown1.Value Mod 256)) 

     MsgBox("Your IP address is: " & "10." & var1 & "." & var2 & "." & "200") 
    End Sub 

答えて

0

番号を2つに分割する必要があります。ビットの最初の半分を取得して192に加え、後半のビットを直接使用します。

Dim number As Integer 

    number = 1 
    Console.WriteLine("*.{0}.{1}.01", 192 + ((number And &HFF00) >> 8), number And &HFF) ' *.192.1.01 

    number = 11 
    Console.WriteLine("*.{0}.{1}.01", 192 + ((number And &HFF00) >> 8), number And &HFF) ' *.192.11.01 

    number = 111 
    Console.WriteLine("*.{0}.{1}.01", 192 + ((number And &HFF00) >> 8), number And &HFF) ' *.192.111.01 

    number = 1111 
    Console.WriteLine("*.{0}.{1}.01", 192 + ((number And &HFF00) >> 8), number And &HFF) ' *.196.87.01 

    number = 3458 
    Console.WriteLine("*.{0}.{1}.01", 192 + ((number And &HFF00) >> 8), number And &HFF) ' *.205.130.01 

数を取る二つ

3458 = 0x0D82

0x0Dの
で 0x82と

それを分割しそして最初の部分に

を追加

0x0Dを+ 192 = 205
0x82と= 130

+0

ありがとう行う必要があり、私は非常に簡単なバージョンを使用するが、原理は同じですが、詳細については、私の更新を参照してください。 – user3224987

+0

@ user3224987私はもっと簡単だと思うが、解決策を見つけてうれしい –

0

これはそれ

Public Function StartPing(txtSiteId As String) As String 
    Dim SiteId As Integer = Integer.Parse(txtSiteId) 

    'backslash performs integer division (no fractionary part) 
    'will throw an error when SiteId results in values greater than 255 
    'type Byte allows only values from 0 to 255 
    Dim Octet2 As Byte = 192 + (SiteId \ 256) 

    'Mod gets rest of division 
    Dim Octet3 As Byte = SiteId Mod 256 

    Return String.Format("*.{0}.{1}.01", Octet2, Octet3) 
End Function 
関連する問題