• 15 апреля стартует «Курс «SQL-injection Master» ©» от команды The Codeby

    За 3 месяца вы пройдете путь от начальных навыков работы с SQL-запросами к базам данных до продвинутых техник. Научитесь находить уязвимости связанные с базами данных, и внедрять произвольный SQL-код в уязвимые приложения.

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

    Запись на курс до 25 апреля. Получить промодоступ ...

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

  • Автор темы navigator174
  • Дата начала
N

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

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

andrey24

исходный массив в двоичном виде:
HHHHhhhh GGGGgggg FFFFffff EEEEeeee DDDDdddd CCCCcccc BBBBbbbb AAAAaaaa
здоровское у тебя представление о двоичных данных, лучше б было бы, если представил нормально, да и с реальными цифрами.
Только без обид )!!!
Вот тебе решение задачи ).

Код:
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
 
A

andrey24

Код:
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
 
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!