我想知道如何在没有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功能的最佳方式.
只需将索引参数传递给您的proc
void proc(byte[] array, int index)
{
for (int i = index; i < array.length; ++i)
{
// do something
}
}
Run Code Online (Sandbox Code Playgroud)