Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Последние темы форума

Показать новые сообщения »

Почтовая рассылка

Подписчиков: 11650
Последний выпуск: 19.06.2015

Преобразование между десятичными, шестнадцатеричными и двоичными числами

Код:
Dim lDec As Long, aHex As String, aBin As String
lDec = 121
aHex = Hex$(lDec) ' Десятичное в шестнадцатеричное
lDec = Val("&H" & aHex) ' Шестнадцатеричное в десятичное

Обратите внимание, что не составляет труда преобразовать шестнадцатеричное значение в двоичное, поэтому, чтобы преобразовать из десятичного в шестнадцатеричное, удобней сперва преобразовать десятичное в двоичное. Наиболее быстрый способ двоичного преобразования, это использовать специальную таблицу преобразования.

Код:
Dim vBinTable As Variant
vBinTable = Array("0000", "0001", "0010", "0011", _
"0100", "0101", "0110", "0111", _
"1000", "1001", "1010", "1011", _
"1100", "1101", "1110", "1111")
Dim i As Integer, k As Long
For k = 1 To Len(aHex)
' Шестнадцатеричное в двоичное
i = Val("&H" & Mid$(aHex, k, 1))
aBin = aBin & vBinTable(i)
Next

Так же несложно сделать преобразование из двоичного значения в десятичное. Однако, это не всегда выполнимо, так как шестнадцатеричные и двоичные значения в VB могут представлять из себя намного большие размеры чем десятичное значение. Таким образом для преобразование из двоичного в шестнадцатеричное опять прибегнем к таблице преобразования, только другого типа.

Код:
Dim aBinTable As String, aHexTable As String
aBinTable = " 0000 0001 0010 0011 0100 0101 0110 0111" & _
" 1000 1001 1010 1011 1100 1101 1110 1111 "
aHexTable = "0123456789ABCDEF"
If Len(aBin) Mod 4 Then
' Делаем длину чётной 4
aBin = String$(4 - (Len(aBin) Mod 4), "0") & aBin
End If
aHex = ""
For k = 1 To Len(aBin) Step 4
i = InStr(aBinTable, " " & Mid$(aBin, k, 4))
aHex = aHex & Mid$(aHexTable, (i - 1) \ 5 + 1, 1)
Next

Оставить комментарий

Комментарий:
можно использовать BB-коды
Максимальная длина комментария - 4000 символов.
 

Комментарии

1.
87K
11 декабря 2012 года
yurginoleg
0 / / 11.12.2012
Мне нравитсяМне не нравится
11 декабря 2012, 08:21:04
If Len(aBin) Mod 4 Then
' Делаем длину чётной 4
aBin = String$(Len(aBin) Mod 4, "0") & aBin
End If

Тут бы ошибочку поправить. Например:

If Len(aBin) Mod 4 Then
' Делаем длину чётной 4
aBin = String$(4 - (Len(aBin) Mod 4), "0") & aBin
End If
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог