如何将C代码转换为Java - Java中的指针等效

时间:2014-01-14 05:21:36

标签: java c pointers equivalent

我正在将一些C代码转换为Java,其中包括图像处理。但是,我陷入了必须转换包含指针计算的一些代码行的情况:

for(i=xMin[k];i<=xMax[k];i++)
{
        for(j=yMin[k];j<=yMax[k];j++)
        {
             if (Bimg[i][j]== k1)
             {
                /* accessing single channel for r g b  value */   

                b = data[i*step + j*channels + 0];
                g = data[i*step + j*channels + 1];
                r = data[i*step + j*channels + 2];
             }       
       }              
}

有人可以告诉我如何将这个“数据”指针转换成java等价物吗?这里,“data”是一个指针变量。

2 个答案:

答案 0 :(得分:1)

指向的数据是什么?

它看起来像是指向一个字节数组,因此只需将数据设为byte[]即可。假设C数组指向并且引用的Java数组具有相同的数据,则相同的计算应该有效。

答案 1 :(得分:1)

我假设您在问题中具体的data实际上是unsigned char的数组。喜欢:

unsigned char *data = (unsigned char*)malloc(datasize*sizeof(unsigned char));

我相信java中的等价物是

byte[] data = new byte[datasize]

而且因为java不允许你操作指针。您应该使用索引来操作data数组。

注意:java中的byte始终为已签名。 您可以通过以下方式获取无符号值:

int v = b & 0xFF