如何在Java中将C代码转换为Java指针等价物

如何在Java中将C代码转换为Java指针等价物,java,c,pointers,equivalent,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 v

我正在将一些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];
             }       
       }              
}

(i=xMin[k];i数据指向什么


它看起来像是指向一个字节数组,所以只需将数据设为一个
字节[]
。假设指向的C数组和引用的Java数组具有相同的数据,同样的计算应该可以工作。

我假设您在问题中指定的
数据实际上是一个
无符号字符的数组。

unsigned char *data = (unsigned char*)malloc(datasize*sizeof(unsigned char));
我相信java中的等价物是

byte[] data = new byte[datasize]
由于java不允许您操作指针,您应该使用索引来操作
数据
数组

注意:
byte
在java中总是有符号的。 可以通过以下方式获取无符号值:

int v = b & 0xFF

读取此否,数据变量指向BytePointer