首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

如何把8位存放的数组转为16位的

2012-04-25 
怎么把8位存放的数组转为16位的8位原始数组:BYTE* pSrc;(已初始化过了)16位目标数组:short* pDst;转换大小

怎么把8位存放的数组转为16位的
8位原始数组:BYTE* pSrc;(已初始化过了)
16位目标数组:short* pDst;
转换大小:int width, int height
请问下高手,我这样做是否可以:
1. 直接使用 pDst = (short*) pSrc 是否可以??
2. 用循环:
void Convert_8u16s(BYTE* pSrc, int width, int height, short* pDst)
{
int i,j;
BYTE *ptr1;
ptr1 = pSrc;
short *ptr2;
ptr2 = pDst;

for(i = 0; i< height; i++)
for(j = 0; j<width; j++)
{
*ptr2 = (short*) pSrc;
ptr1++;
ptr2++;
}
}


上面这两种是否可以,或还有更简洁可行的方法?


[解决办法]
2可以,1就不行了。。。
[解决办法]
用stl泛型算法,一句话

C/C++ code
copy(pSrc, pSrc+height*width, pDst); 

热点排行