2015-12-12 2 views
0

Я пытаюсь написать функцию VB, которая преобразует двоичный код в десятичный. Мне нужно сохранить двоичную длину в массиве и использовать цикл, чтобы найти ответ. Я пытался понять это на некоторое время. Это то, что я до сих пор могу вам помочь.Преобразование двоичного в десятичное с использованием массива и цикла

Public Function binaryToDecimal(ByVal Binary As String) 
    Dim myDecimal As Integer 
    Dim blength As Integer = Binary.Length 
    Dim index(blength) As Integer 
    For index = index To 0 Step -1 
     myDecimal += Binary * (2^(blength - 1)) 
     blength = blength - 1 
    Next 
    Return myDecimal 
End Function 
+0

Прошло несколько дней, и я не могу не заметить, что вы были в сети с тех пор. Мне любопытно, был ли мой ответ на любую помощь? –

ответ

0

Я вообще не понимаю ваш код ... Вы никогда не заполняете массив ничем. Вы ничего не делаете, если двоичная строка содержит нули (0).

Но если вы хотите, чтобы преобразовать двоичный в десятичные, вот простой подход (и вы на самом деле не нужен массив):

Public Function BinaryToDecimal(ByVal Binary As String) As Integer 
    Dim ReturnValue As Integer = 0 
    Dim x As Integer = 1 
    For i = Binary.Length - 1 To 0 Step -1 
     If Binary.Chars(i) = "1"c Then 
      ReturnValue += x 
     End If 
     x += x 
    Next 
    Return ReturnValue 
End Function 

Функция начинается в конце строки и идет в обратном направлении. Он увеличивает значение x для каждого символа, а ReturnValue увеличивается на текущий x, если текущий символ равен «1».

Функция преобразует, например, в 111115, 100000 в 32 и 1011101001 в 745.

Испытан: http://ideone.com/SsZ3d2

Надеется, что это помогает!


EDIT:

Стоит также отметить, что функция не поддерживает пробелы в строке. Если вы хотите, чтобы это было сделано, просто скажите мне, и я тоже добавлю.

Смежные вопросы