サードパーティのライブラリを使用していない場合に、に変換byte[]
する方法と、に変換Byte[]
する方法を教えてください。Byte[]
byte[]
標準ライブラリを使用するだけで高速に実行する方法はありますか?
Byte
クラスはプリミティブのラッパーbyte
です。これは仕事をするはずです:
byte[] bytes = new byte[10];
Byte[] byteObjects = new Byte[bytes.length];
int i=0;
// Associating Byte array values with bytes. (byte[] to Byte[])
for(byte b: bytes)
byteObjects[i++] = b; // Autoboxing.
....
int j=0;
// Unboxing Byte values. (Byte[] to byte[])
for(Byte b: byteObjects)
bytes[j++] = b.byteValue();
Java 8 ソリューション:
Byte[] toObjects(byte[] bytesPrim) {
Byte[] bytes = new Byte[bytesPrim.length];
Arrays.setAll(bytes, n -> bytesPrim[n]);
return bytes;
}
Byte[]
残念ながら、これを実行して からに変換することはできませんbyte[]
。 、、およびにArrays
はありますが、他のプリミティブ型にはありません。setAll
double[]
int[]
long[]
ここで提案されているように、Apache Commons lang ライブラリ ArrayUtils クラスで toPrimitive メソッドを使用できます - Java - Byte[] to byte[]
byte[] toPrimitives(Byte[] oBytes)
{
byte[] bytes = new byte[oBytes.length];
for(int i = 0; i < oBytes.length; i++){
bytes[i] = oBytes[i];
}
return bytes;
}
逆:
//byte[] to Byte[]
Byte[] toObjects(byte[] bytesPrim) {
Byte[] bytes = new Byte[bytesPrim.length];
int i = 0;
for (byte b : bytesPrim) bytes[i++] = b; //Autoboxing
return bytes;
}
byte[] から Byte[] へ:
byte[] b = new byte[]{1,2};
Byte[] B = new Byte[b.length];
for (int i = 0; i < b.length; i++)
{
B[i] = Byte.valueOf(b[i]);
}
Byte[] から byte[] へ (以前に定義した を使用B
):
byte[] b2 = new byte[B.length];
for (int i = 0; i < B.length; i++)
{
b2[i] = B[i];
}