在256个十六进制表中转换512位

时间:2016-01-28 09:52:04

标签: c++ arrays buffer

我有一个缓冲区unsigned char table [512],我希望将其更快地转换为short int table [256]的表,其中每个位置都是表的字节的复合。

我有一个相机给我这个缓冲区,它是将视差转换为真实深度的表。

unsigned char zDtable[512] = {0};
unsigned short int zDTableHexa[256]={0};
.. get the buffer data.....
for (int i = 0; i < 256; ++i) {
        zDTableHexa[i]=zDtable[i*2]<<8 + zDtable[i*2+1];

}

这两个在转换好值时存在问题,字节反转:

memcpy(zDTableHexa_ptr,zDtable,256*sizeof( unsigned short int));
unsigned short* zDTableHexa = (unsigned short*)zDtable;

1 个答案:

答案 0 :(得分:-1)

尝试这样的事情

short* zDTableHexa = (short*)zDtable;

它只是将char数组的内存空间映射到short数组。所以如果内存看起来像这样: (char0),(CHAR1),(CHAR2),(CHAR3)

然后它将被重新解释为 (short0 = char0,char1),(short1 = char2,char3)

请注意,这种直接的重新解释取决于字节顺序,并且正式允许一个足够迂腐的编译器来执行不正常的事情,即它是系统和编译器特定的。