Битовые операции с десятичными значениями

Тема в разделе "Visual Basic", создана пользователем navigator174, 17 янв 2011.

  1. navigator174

    navigator174 Гость

    По работе заставили изучать программу DIAdem (может кто знает такую). Написание DataPlugin - ов в ней осуществляется, вроде как, на Visual Basic Script - приходится на ходу изучать бейсик. Вопрос: имеется массив из 8 десятичных чисел (значения не >255), нужно удалить 2 старших бита и путем сдвигов получить 6 десятичных значений.
    Для наглядности:

    исходный массив в двоичном виде:
    HHHHhhhh GGGGgggg FFFFffff EEEEeeee DDDDdddd CCCCcccc BBBBbbbb AAAAaaaa

    массив после удаления старших битов:
    HHhhhh GGgggg FFffff EEeeee DDdddd CCcccc BBbbbb AAaaaa

    массив после сдвигов:
    HHhhhhGG ggggFFff ffEEeeee DDddddCC ccccBBbb bbAAaaaa

    Буду благодарен за любую помощь.
     
  2. andrey24

    andrey24 Member

    Регистрация:
    8 июл 2010
    Сообщения:
    20
    Симпатии:
    0
    здоровское у тебя представление о двоичных данных, лучше б было бы, если представил нормально, да и с реальными цифрами.
    Только без обид )!!!
    Вот тебе решение задачи ).

    Код (Text):
    Dim arr1(7) As String ' Наш массив бит
    Dim arr2(5) As String ' Конечный массив бит
    Dim pospe_udal_bit As String ' Переменная сама за себя говорит )

    Private Sub Command1_Click()
    ' Тут присваиваю какие-то значения массиву
    arr1(0) = "00011101": arr1(1) = "01011101": arr1(2) = "10011101": arr1(3) = "00010101"
    arr1(4) = "00101101": arr1(5) = "01100101": arr1(6) = "00001101": arr1(7) = "00011001"

    For i = 0 To 7
    arr1(i) = Right(arr1(i), 6) ' С права берем 6 цифр, тем самым отсекая 1-е две.
    Next i

    pospe_udal_bit = Replace(Join(arr1), " ", "") ' Объединяем полученный массив в одну строку
    ' и удаляем пробелы

    For i = 0 To 5
    arr2(i) = Mid(pospe_udal_bit, (i * 8) + 1, 8) ' разделяем строку на байты
    Next i                                      ' и получаем наши желанные 6 байт!

    End Sub
     
  3. andrey24

    andrey24 Member

    Регистрация:
    8 июл 2010
    Сообщения:
    20
    Симпатии:
    0
    Код (Text):
    Dim arr1(7) As String ' Наш массив бит
    Dim arr2(5) As String ' Конечный массив бит
    Dim pospe_udal_bit As String ' Переменная сама за себя говорит )

    Private Sub Command1_Click()
    ' Тут присваиваю какие-то значения массиву
    arr1(0) = "00011101": arr1(1) = "01011101": arr1(2) = "10011101": arr1(3) = "00010101"
    arr1(4) = "00101101": arr1(5) = "01100101": arr1(6) = "00001101": arr1(7) = "00011001"

    For i = 0 To 7
    arr1(i) = Right(arr1(i), 6) ' С права берем 6 цифр, тем самым отсекая 1-е две.
    Next i

    pospe_udal_bit = Replace(Join(arr1), " ", "") ' Объединяем полученный массив в одну строку
    ' и удаляем пробелы

    For i = 0 To 5
    arr2(i) = Mid(pospe_udal_bit, (i * 8) + 1, 8) ' разделяем строку на байты
    Next i                                      ' и получаем наши желанные 6 байт!

    End Sub
     
Загрузка...

Поделиться этой страницей