如何将无符号short的数组转换为int数组?

时间:2014-04-17 10:57:32

标签: c++ c arrays casting

我有2个阵列:

unsigned short* array1;
int* array2;

是否可以通过快速方式将array1中的所有数据导入array2,以便array2[0]=array1[0], array2[1] = array1[1] ...等的值

我的问题提到了施法,但我认为这是一厢情愿的想法! 显然,我可以使用for循环逐个元素执行此元素,但我正在编写一个图像处理应用程序,速度是关键。如果没有铸造那么还有其他解决方案吗?感谢。

2 个答案:

答案 0 :(得分:0)

  

如何将无符号short的数组转换为int数组?

你不是。如果你这样做,并且你使用了结果,那么你手头就会有一些很好的未定义行为。

  

是否可以快速将array1中的所有数据导入array2

是的,复制数组元素。它在任何体面的现代计算机上都会很快。

答案 1 :(得分:-1)

if (sizeof (int) == sizeof (short)) {
    array2 = (int*)array1; // UB: this may not work on some implementations
} else {
    // allocate memory for array2
    for (i = 0; i < nelems; i++) {
        array2[i] = array1[i];
    }
    // possibly release resources for array1
}