-
Удаление полубайтов
Добрый день!
Помогите пожалуйста разобраться. Задача с бинарным протоколом. На входе 4 байта, у которых значащая часть это младшая, а старшая служебная. Например строка из 4 байтов - "B0C2BAC5". Надо привести ее к виду "02A5". Как удалить полубайты?
Заранее спасибо!
-
логический (байт and 0F), далее склейка со сдвигом влево на 4
-
Логический осилил (sb5:=byTempArray[1] AND 2#00001111;) а вот склейку и сдвиг не хватает квалификации. Можете привести пример кода? А далее разберусь уже...
-
просто OR делаете, только после того как вы маской прошлись каждый полубайт расположить в нужных позициях.
пример - 0000 - 0 располагаете в 0000, 2 -> 0000, A -> 0000 , 5 -> 0000
ну а там как проще, сперва сделать 2 байта а потом старший сдвинуть в ворде, или просто word и сделать указатель на два байта.
"B0C2BAC5" - B0 - маска 0F - смещение на 4 бита, С2 - маска 0f - OR с предыдущим результатом. ну и т.д. в том же духе...
сдвиг SHL - влево на нужное количество бит.
-
Огромное спасибо, принцип понятен, далее дело техники))