如何在Java中将C代码转换为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
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