Java byte[] 指针转换

标签 java

给定这些参数我有一个方法

int read( byte result[], int offset, int size ) {
}

我需要从中调用不同的方法:

int read( byte result[], int length ) {
}

我知道如何在 C++ 中使用偏移量转换数组,但我不知道如何在 Java 中执行此操作。

最佳答案

你不能。您必须创建子数组的副本。

最简单的方法是使用 Arrays.copyOfRange(xxx[] original, int from, int to) 之一方法,其中 xxx 是原始类型或任何对象类型。

如果需要,您可以使用 System.arraycopy() 将更新后的值复制回原始数组.

在您的情况下,参数实际上只是输出,因此您只需创建一个新数组,用它调用该方法,然后将值复制到原始数组,例如

int read( byte result[], int offset, int size ) {
    if (offset == 0)
        return read(result, size);
    byte[] buf = new byte[size];
    int bytesRead = read(buf, size);
    System.arraycopy(buf, 0, result, offset, bytesRead);
    return bytesRead;
}

关于Java byte[] 指针转换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41023096/

相关文章:

java - 服务器-客户端异步读取: separate client messages

java - 与 intern 的字符串比较

java - 如果不存在重复值,则将类/对象添加到数组列表

java - 无法使用 Eclipse 正确部署所需的项目

Java:我不明白这个 Sprite 表读取代码的部分意义是什么?

Java 枚举类型名称反射

java - 上传照片按钮在 Selenium Webdriver 中不起作用

Java - 如何关闭重置由我的应用程序初始化的套接字并即时重新打开它?在 TCP 或 UDP 中

java - MultipartFile 到 PDF 转换并下载此文件

java - PrintWriter 和 DataOutputStream 有什么区别?