高手求救!8位数组转16位数组?

kyle 2012-03-20 11:25:22
大家帮看下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);
}

}
...全文
676 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
chenxy3133 2012-03-20
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 breeze505 的回复:]

引用 1 楼 czh3642210 的回复:
C/C++ code

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


这样转不行,数据丢失很厉害。
[/Quote]
你的是二维数组吧,你调试下,看看++,加的是行地址还是列地址...
kyle 2012-03-20
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 czh3642210 的回复:]
C/C++ code

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

这样转不行,数据丢失很厉害。
面包大师 2012-03-20
  • 打赏
  • 举报
回复
ptr1 += sizeof(BYTE);//这儿直接++就好,不要sizeof(BYTE)
ptr2 += sizeof(short);
面包大师 2012-03-20
  • 打赏
  • 举报
回复
ptr1 += sizeof(BYTE);//这儿直接++就好,不要sizeof(BYTE)
ptr2 += sizeof(short);
面包大师 2012-03-20
  • 打赏
  • 举报
回复
ptr1 += sizeof(BYTE);//这儿直接++就好,不要sizeof(BYTE)
ptr2 += sizeof(short);
nice_cxf 2012-03-20
  • 打赏
  • 举报
回复
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 ++;
是等价的,我想你大概那里写错了
kyle 2012-03-20
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 nice_cxf 的回复:]
ptr1 += sizeof(BYTE);
ptr2 += sizeof(short);
改成:
ptr1++;
ptr2++;
多看看关于指针的书把
[/Quote]

你这样是不行的!我一开是这样写的,后面改成如我上面写的那样。
经调试,应该用下面:
*(ptr2 + i*width +j) = *(ptr1 + i*width +j);
因为我这是一个图片压缩算法里的函数,我这样转出来的图像偏红,不知道是什么原因。。。
nice_cxf 2012-03-20
  • 打赏
  • 举报
回复
ptr1 += sizeof(BYTE);
ptr2 += sizeof(short);
改成:
ptr1++;
ptr2++;
多看看关于指针的书把

69,373

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧