【发布时间】:2016-01-28 09:52:04
【问题描述】:
我有一个缓冲区 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;
【问题讨论】:
-
数据以二进制的形式存储在内存中。十进制、十六进制和八进制只是将二进制数据表示为数字的不同方式。
-
至于“FAST”,您是否进行了测量和分析以了解这是一个瓶颈?像这样的小循环在几乎所有现代硬件上都会非常快,您需要一个非常小的嵌入式系统才能进行测量。