访问“内存”中的字节元素

时间:2012-03-26 03:29:24

标签: java jna

Iam尝试将二进制文件读取到内存并将内存块的起始地址传递给本机函数:

 Memory image = new Memory(length);
 int offset = 0;
 int numRead = 0;
  try
  {
    while (offset < image.size() && (numRead = in.read(image.getByteArray(0,(int)image.size()), offset, (int)image.size() - offset)) >= 0)
     {
        offset += numRead;
    }

    if (offset < image.size())
    {
        throw new IOException("Could not completely read file " + fileFileName.getName());
    }
    in.close();
  }
  catch(Exception IOException)
  {
      System.out.println("\nError Occured in try block!!!");
  }
  byte imageByte = image.getByte(0);

问题是imageByte的值是-60而不是127.我通过取一个字节数组(而不是Memory)并将文件读入其中来检查。但它也为数组[0]显示了127。这可能是什么问题???

1 个答案:

答案 0 :(得分:0)

好吧我解决了这个问题:D因为getByteArray()返回一个新的字节数组,数据被复制到那个新的字节数组,而我想要使用的内存区域仍未被初始化