我需要在C语言中从short
数据类型中提取特定部分(位数)。
例如,我有一个二进制数52504,表示为1100110100011000,我想要前6位(LSB-->MSB,即011000十进制24)和后面的10位(11001101000十进制820)。
同样地,我想要这个函数过于通用,以提取给定“开始”和“结束”(即等效于某些十进制值的一些位块)的特定位数。
我查看了其他帖子,但它们没有提供足够通用的函数。
我需要适用于C语言的short
数据类型的解决方案。
编辑
我拥有2048字节大小的短数组。每个像素是10位。因此,我的16位字节包含2个像素数据的时间,有时是3个像素数据。
例如:
(像素:0,1) 10位+ 6位
然后(像素:1,2,3) 4位(第一个像素剩余的位)+ 10位+ 2位。
这种模式继续下去...所以,我想要提取每个像素,并使整个数组具有让每个像素完全占据一个完整字节(16位)的每个像素,例如:
一个字节应该包含一个数据像素,另一个字节应该包含另一个像素值的整个16位,依此类推。
num & 0000000000111111
;或者如果您需要另一端,则使用(num & 1111111111000000) >> 6
。 - Ferguzz