这段代码是什么意思

gxx2019 2009-07-21 09:48:53
int iXOff, iYOff, iSample;

iSample = 0;

for( iYOff = 0; iYOff < nYSize; iYOff++ )
{
for( iXOff = 0; iXOff < nXSize; iXOff++ )
{
unsigned char *pabyData;

pabyData = pabySrc + iYOff * nLineOffset + iXOff * nPixelOffset;

if( nSampleFormat == SAMPLEFORMAT_UINT && nPixelBytes == 1 )
{
padfSamples[iSample++] = *pabyData;
}
else if( nSampleFormat == SAMPLEFORMAT_UINT && nPixelBytes == 2 )
{
padfSamples[iSample++] = ((uint16 *) pabyData)[0];
}
else if( nSampleFormat == SAMPLEFORMAT_UINT && nPixelBytes == 4 )
{
padfSamples[iSample++] = ((uint32 *) pabyData)[0];
}
else if( nSampleFormat == SAMPLEFORMAT_INT && nPixelBytes == 2 )
{
padfSamples[iSample++] = ((int16 *) pabyData)[0];
}
else if( nSampleFormat == SAMPLEFORMAT_INT && nPixelBytes == 32 )
{
padfSamples[iSample++] = ((int32 *) pabyData)[0];
}
else if( nSampleFormat == SAMPLEFORMAT_IEEEFP && nPixelBytes == 4 )
{
padfSamples[iSample++] = ((float *) pabyData)[0];
}
else if( nSampleFormat == SAMPLEFORMAT_IEEEFP && nPixelBytes == 8 )
{
padfSamples[iSample++] = ((double *) pabyData)[0];
}
}

pabySrc 是形参传过来的值,为unsigned char*,padfSamples为double*。((xx*)pabyData)[0]是什么意思啊?
...全文
85 点赞 收藏 5
写回复
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
padfSamples[iSample++] = ((uint16 *) pabyData)[0];

这种强制转换很多是不能成功的,得看编译器了。
回复
steven_007 2009-07-21
padfSamples[iSample++] = ((double *) pabyData)[0];
pabyData 作为指针传给padfSamples[iSample++]

padfSamples 里面存放的是一个个地址。
回复
zhangxfeng112 2009-07-21
padfSamples[iSample++] = ((double *) pabyData)[0];
这句话的意思是把pabyData指向的8个字节,当成一个double类型传给padfsamples[iSample]
然后iSample++;
回复
t1397018 2009-07-21
((xx*)pabyData)强制装换成xx形的指针
回复
zhangxfeng112 2009-07-21
[Quote=引用 3 楼 steven_007 的回复:]
padfSamples[iSample++] = ((double *) pabyData)[0];
pabyData 作为指针传给padfSamples[iSample++]

padfSamples 里面存放的是一个个地址。
[/Quote]

瞎扯蛋,无人子弟。
回复
发动态
发帖子
C++ 语言
创建于2007-09-28

5.9w+

社区成员

C++ 语言相关问题讨论,技术干货分享,前沿动态等
申请成为版主
社区公告
暂无公告