.NET My.Computer.Network.Ping & PadLeft - PullRequest
       52

.NET My.Computer.Network.Ping & PadLeft

0 голосов
/ 29 октября 2009

Следующий фрагмент кода выдает ошибку при заполнении последней части 0, а последняя часть - 008, 009, 018, 019, 028, 029 и т. Д. Кто-нибудь понял, почему?

Sub Main()
    Dim fixed As String = "192.168.0."
    Dim ip1, ip2 As String

    For i As Int32 = 1 To 255
        ip1 = fixed & Convert.ToString(i)
        Console.Write(ip1 & " - ")
        Try
            Console.WriteLine(My.Computer.Network.Ping(ip1))
        Catch ex As Exception
            Console.WriteLine(ex.Message)
        End Try

        ip2 = fixed & Convert.ToString(i).PadLeft(3, "0"c)
        Console.Write(ip2 & " - ")
        Try
            Console.WriteLine(My.Computer.Network.Ping(ip2))
        Catch ex As Exception
            Console.WriteLine(ex.Message)
        End Try
    Next
End Sub

Ответы [ 2 ]

3 голосов
/ 29 октября 2009

Я предполагаю, что ведущий ноль заставляет некоторую подсистему интерпретировать число как восьмеричное (старое соглашение C). 8 и 9 являются недействительными восьмеричными цифрами, поэтому восьмеричные значения с 8 и 9 в них могут вызвать ошибку.

1 голос
/ 29 октября 2009

Почему вы его дополняете? Я не думаю, что вам нужны дополнительные 0.

...