高手求救!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);
[解决办法]
[解决办法]
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 ++;
是等价的,我想你大概那里写错了