我正在将一些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”是一个指针变量。
答案 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