渐行渐远是否还有一种坚持留在心间
2018-07-24 04:30
采纳率: 100%
浏览 3.6k

C++ unsigned char* 转 int*,操作符重载,隐式类型转换

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 * ,是否有别的方法?望指教。

  • 写回答
  • 好问题 提建议
  • 追加酬金
  • 关注问题
  • 邀请回答

4条回答 默认 最新

相关推荐 更多相似问题