Как извлечь определенные биты из числа в C?

Мне нужно извлечь определенную часть (количество битов) типа данных shortв C.

Например, у меня есть двоичный файл 52504 как 11001101000 11000, и я хочу сначала 6 ( FROM LSB --> MSB т.е. 011000 десятичное 24) бит и остальные 10 бит ( 11001101000 десятичное 820).

Точно так же я хочу, чтобы эта функция была слишком обобщенной, чтобы извлекать определенное количество битов, заданных «начало» и «конец» (т.е. куски битов, эквивалентные некоторому десятичному значению).

Я проверил другие сообщения, но они не помогли, так как данные функции не слишком обобщены.

Мне нужно что-то, что может работать с короткимтипом данных C.

Изменить

У меня есть короткий массив размером 2048 байт. Где каждый пиксель имеет 10 бит. Итак, мои 16 бит, состоящие из каждого байта, занимают некоторое время 2 пикселя данных, иногда 3 пикселя данных.

Нравится

(PIXEL: 0,1) 10 БИТ + 6 БИТ

затем ( ПИКСЕЛЬ : 1,2,3 ) 4 БИТА (оставшиеся биты 1-го пикселя) + 10 БИТ + 2 БИТ.

и так далее... эта схема продолжается... Итак, все, что я хочу извлечь каждый пиксель и сделать весь массив, в котором каждый пиксель должен быть полностью занят в ВСЕМ БАЙТЕ (из 16 бит), например.. 1 байт должен содержать 1 ПИКСЕЛ ДАННЫХ, другой БАЙТ должен содержать другое значение ПИКСЕЛЯ в целых 16 битах и ​​так далее.

19
задан dasblinkenlight 21 November 2014 в 13:26
поделиться