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

高手!8位数组转16位数组

2012-04-14 
高手求救!8位数组转16位数组?大家帮看下8位数组怎么转16位数组啊?帮看下下面哪里出错了。。。void Convert_8u

高手求救!8位数组转16位数组?
大家帮看下8位数组怎么转16位数组啊?帮看下下面哪里出错了。。。


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 = *ptr1;
ptr1 += sizeof(BYTE);
ptr2 += sizeof(short);
}

}


[解决办法]

C/C++ code
ptr1 += sizeof(BYTE);//这儿直接++就好,不要sizeof(BYTE)ptr2 += sizeof(short);
[解决办法]
探讨

引用:
C/C++ code

ptr1 += sizeof(BYTE);//这儿直接++就好,不要sizeof(BYTE)
ptr2 += sizeof(short);


这样转不行,数据丢失很厉害。

[解决办法]
void Convert_8u16s(char* pSrc, int width, int height, short* pDst)
{

int i,j;
char *ptr1;
ptr1 = pSrc;
short *ptr2;
ptr2 = pDst;

for(i = 0; i< height; i++)
for(j = 0; j<width; j++)
{

*ptr2 = *ptr1;
ptr1 ++;
ptr2 ++;

}

}

int main()
{
char szRet[12]={0};
int i,j;
for ( i =0 ;i<12;i++)
{
szRet[i]=i;
}
short szDest[13]={0};
Convert_8u16s(szRet,3,4,szDest);

for (i =0 ;i<12;i++)
{
printf("%d",szDest[i]);
}
system("pause");

}
用这个测试了一下,没问题
*(ptr2 + i*width +j) = *(ptr1 + i*width +j);

*ptr2 = *ptr1;
ptr1 ++;
ptr2 ++;
是等价的,我想你大概那里写错了

热点排行