将10位值写入char数组

时间:2017-07-10 12:59:53

标签: c++ bit-manipulation

我正在尝试将10位值(具有高动态范围的图像)写入char *数组。所以,如果我有一个大小为10 x 10的图像,我将数组指定为:

char * buffer = [10 * 10 * 2];

这个想法是每个像素可以存储在2个字节中。现在,在我的设备上,我有一个API调用,可以读取图像的一行。即我可以做类似的事情:

for(int i = 0; i < 10; ++i)
{
    char * current = &buffer[i * 10 * 2];
    read_line(current);
    // Map to 10-bit here...
}

现在,此函数读入字节流。如何确保每个2字节字正确映射到10位值,这样当我将此数组设置为short类型时,每个值都是0-1023之前的10位像素值。

1 个答案:

答案 0 :(得分:3)

你不能。行的格式由read_line函数决定。您需要阅读此函数的文档以找出它使用的格式,然后使用一些小问题将您获得的值转换为内部格式。

或以其他方式决定该功能使用的格式优于您的内部格式,并转换您的程序直接使用它。