PDA

Просмотр полной версии : Удаление полубайтов



scmember
27.09.2018, 15:55
Добрый день!

Помогите пожалуйста разобраться. Задача с бинарным протоколом. На входе 4 байта, у которых значащая часть это младшая, а старшая служебная. Например строка из 4 байтов - "B0C2BAC5". Надо привести ее к виду "02A5". Как удалить полубайты?

Заранее спасибо!

Трофимов Артем
27.09.2018, 16:20
логический (байт and 0F), далее склейка со сдвигом влево на 4

scmember
27.09.2018, 16:31
Логический осилил (sb5:=byTempArray[1] AND 2#00001111;) а вот склейку и сдвиг не хватает квалификации. Можете привести пример кода? А далее разберусь уже...

melky
27.09.2018, 16:43
просто OR делаете, только после того как вы маской прошлись каждый полубайт расположить в нужных позициях.
пример - 0000 - 0 располагаете в 0000, 2 -> 0000, A -> 0000 , 5 -> 0000
ну а там как проще, сперва сделать 2 байта а потом старший сдвинуть в ворде, или просто word и сделать указатель на два байта.

"B0C2BAC5" - B0 - маска 0F - смещение на 4 бита, С2 - маска 0f - OR с предыдущим результатом. ну и т.д. в том же духе...
сдвиг SHL - влево на нужное количество бит.

scmember
27.09.2018, 17:05
Огромное спасибо, принцип понятен, далее дело техники))