unsigned char * data;
data是内存连续的数组,size很长,需要转换成 int * ints;
其中 每三个char组合一个int
比如
ints[0] = (data[0]<< 16) | (data[1]<< 8 ) | data[2] ;
我不希望用for循环遍历算出来,以及频繁的内存拷贝操作,效率太低
下面是我没走通的路子:
typedef struct int24 { uchar r, g, b; operator int() { return b | (g << 8) | (r << 16); } } unsigned char * data = ... int24 * tmp = (int24 * ) data; int * ints = (int * ) tmp;
使用int * ints = (int * ) tmp毫无意义,还是指针转换,没能应用到重载操作符类型转换
最终结果是得到int * ,是否有别的方法?望指教。
繁花不似锦
相关分类