在 PC 的世界中,一个字节通常表示 8 位的内存边界对齐,计算机将其视为一个单元。在小型和大型计算机中,较长的序列,如 16 位和 32 位(分别称为全字和双字)也是可能的。
但在遥感世界中,传感器/探测器用于通过使用它们自己的辐射分辨率(例如 6 位、10 位和 12 位)来测量来自大气和地球的辐射强度的变化。因此,地面站采集的遥感原始数据图像总是以 6 位、10 位或 12 位 BCD 流的形式打包。这些数据逐个扫描线存储。
我的工作是从一个打开的二进制文件中一个一个地读取这种扫描线,并存储到一个无符号字符源缓冲区中一段时间。对于 6 位流,我必须缩放到 8 位(一个字节),对于 10 位或 12 位流,我会将它们缩放为无符号短整数。最后,我应该得到一个无符号字符(6 位)或无符号短目标缓冲区。
你能告诉我怎么做吗?C/C++ 代码演示将不胜感激!谢谢你。
10101010 01110101 00011001
| |
-----------
10-bit BCD
10101010 01110101 00011001
| |
-----------
10-bit BCD
10101010 01110101 01100110
| |
------------
10-bit BCD