java - 将 C 代码转换为 Java :Pointers

标签 java c

我知道我们不能在 Java 中安全地访问对象的地址,我们永远不应该尝试做这样的事情。但我需要将此 C 代码转换为 Java。值的大小始终为 8 位。 C代码是这样的:

void merge(int value,unsigned short* outp, int x,int y, int width)
{
    unsigned char *outc;
    outc=(unsigned char *) outp + y*width +x;
    *outc=value;
} 

为了将其转换为 Java,我已将 unsigned short* outp 转换为 short outp[] 并将 unsigned char* outc 转换为 短路 []。然后我可以分部分赋值。但我面临的问题是,当这个函数被其他函数循环调用时,宽度每次都会增加,并且只有一个字节被分配给一个特定的单元格..

我试过这段 Java 代码:

void merge(int value, int outp[], int x, int y, int width)
{

if(outp[y*width + x] >0)
   {    
        outp[y*width+x]=outp[y*width+x]<<8 +value;
   }
   else
   {
        outp[y*width+x]=value;
   }
}

我该怎么做。请帮忙。谢谢。

最佳答案

在java中没有指针是“不可能”的。它具有与原始类型无关的引用,例如 char

因此,在 Java 中,我们通常使用返回值的方法,而不是像 C 程序员那样通过指针返回值:

char merge(int value,int x,int y, int width) {
    char outchar;
    /// your code...
    return outchar;
}

关于java - 将 C 代码转换为 Java :Pointers,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9908878/

相关文章:

c - 求阶乘时出现段错误

java - 防止或防止反射

java.security.cert.CertificateException : Unable to initialize

c++ - 如何在 C/C++ 中以编程方式创建软链接(soft link)?

c - Ruby Fiddle - C 和 Ruby 之间的函数行为不同

c - 另一个条件运算符嵌套问题

java - 如何从 Spring Cloud 中的 URL 中提取 jar 名称和文件名称?

java - 用户和管理员 Java 项目

java - JDBC 数据源

c - 内存寻址和指针