PDA

Просмотр полной версии : Склейка byte в int с редактированием



Атаман
30.11.2015, 14:01
Добрый день.

Нужно из нескольких байт (например из двух) выбрать нужные биты, например с 5 по 15 и преобразовать выбранное в INT. Подскажите, как это лучше сделать?

melky
30.11.2015, 14:20
В библиотеках есть PACK, UNPACK, заводите необходимые биты и получайте результат.
Или вам необходимо, чтобы с 5 по 15 биты так и остались с 5 по 15 но то, что до них стало нулями ? тогда банально AND применять с битовой маской.

Yegor
30.11.2015, 14:50
Сдвиг, сумма, сдвиг, маска.
Ну или в префиксно-инфиксных терминах маска от сдвига суммы со сдвигом))
i := SHR(b1 + SHL(BYTE_TO_INT(b2), 8), 5) AND 2#0000001111111111;Хз чё оно не компилится, домой пора ехать.

capzap
30.11.2015, 15:23
Сдвиг, сумма, сдвиг, маска.
Ну или в префиксно-инфиксных терминах маска от сдвига суммы со сдвигом))
i := SHR(b1 + SHL(BYTE_TO_INT(b2), 8), 5) AND 2#0000001111111111;Хз чё оно не компилится, домой пора ехать.

может в ИНТ не надо было конвертировать, а в ворд

Атаман
09.12.2015, 17:11
Спасибо за подсказки. Склеил байты через указатели, а потом применил AND с битовой маской.