繁体   English   中英

如何将unsigned short数组转换为int数组?

[英]How do I cast array of unsigned short to an array of int?

我有2个数组:

unsigned short* array1;
int* array2;

有没有一种快速的方法可以将array1中的所有数据放入array2中,从而使array2[0]=array1[0], array2[1] = array1[1] ...等的值。

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

如何将unsigned short数组转换为int数组?

你不知道 如果您这样做了,并使用了结果,那么手头会有一些不错的未定义行为。

有没有一种快速的方法来将array1中的所有数据放入array2

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

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
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM