如何在没有arraycopy的情况下使用byte []的一部分?

kil*_*gun 3 java byte

我想知道如何在没有arraycopy的情况下使用byte []的一部分?

用C语言

char buf[100];
int i;

for (i = 0; i < 100; i += 10) {
    proc(buf + i);
}
Run Code Online (Sandbox Code Playgroud)

在Java中,

byte[] buf = new byte[100];
int i;

for (i = 0; i < 100; i += 10) {
    proc(buf + i);
}
Run Code Online (Sandbox Code Playgroud)

不行.

byte[] buf = new byte[100];
int i;

for (i = 0; i < 100; i += 10) {
    byte[] temp = new byte[10];
    System.arraycopy(buf, i, temp, 0, 10);
    proc(temp);
}
Run Code Online (Sandbox Code Playgroud)

只有工作.

但是,我不喜欢arraycopy.

我怎么解决这个问题?

小智 8

您可以随时扩展"proc"函数以获取3个参数,如下所示:

proc(byte[] a, int offset, int length)
Run Code Online (Sandbox Code Playgroud)

这是模仿Java中C-array功能的最佳方式.

  • 这是一个看似简单的问题,但如果您来自C背景则非常相关.基本上,你必须忘掉你所有的指针思维.Java中没有相同的概念.上面提出的brandx几乎是处理原始数组的标准模式. (3认同)

ba_*_*end 1

只需将索引参数传递给您的proc

void proc(byte[] array, int index)
{
    for (int i = index; i < array.length; ++i)
    {
        // do something   
    }     
}
Run Code Online (Sandbox Code Playgroud)