【问题标题】:How to convert C code to Java - Pointer equivalent in Java [closed]如何将 C 代码转换为 Java - Java 中的指针等价物 [关闭]
【发布时间】:2014-01-14 05:21:35
【问题描述】:

我正在将一些 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 等价物?这里,“数据”是一个指针变量。

【问题讨论】:

标签: java c pointers equivalent


【解决方案1】:

数据指向什么?

看起来它指向一个字节数组,所以只需将数据设为byte[]。假设指向的 C 数组和引用的 Java 数组具有相同的数据,则应该进行相同的计算。

【讨论】:

  • 不,数据变量指向 BytePointer
【解决方案2】:

我假设您在问题中指定的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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-02-17
    • 1970-01-01
    • 2019-04-11
    • 1970-01-01
    • 2018-08-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多