2016-12-07 13 views
0

私は別のメソッドを呼び出す必要がJavaのbyte []ポインタ変換

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

そこから、これらの引数指定されたメソッドがあります。

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

を私はC++の配列を変換する方法を知っていますオフセットはありますが、私はJavaでこれをどうやって行うのか分かりません。

+0

できません。サブアレイのコピーを作成する必要があります。 – Andreas

+0

ありがとう@Andreas、これを答えとして投稿してもよろしいですか? – Bamaco

+0

生ポインタはjavaでサポートされていません。 System.arrayCopyまたはArrays.copyOfまたは手動コピーを使用する – GurV

答えて

1

できません。サブアレイのコピーを作成する必要があります。

最も簡単な方法はArrays.copyOfRange(xxx[] original, int from, int to)メソッドの1つを使用することです。ここで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; 
}