87

サードパーティのライブラリを使用していない場合に、に変換byte[]する方法と、に変換Byte[]する方法を教えてください。Byte[]byte[]

標準ライブラリを使用するだけで高速に実行する方法はありますか?

4

8 に答える 8

57

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();
于 2012-10-17T22:31:13.313 に答える
20

Java 8 ソリューション:

Byte[] toObjects(byte[] bytesPrim) {
    Byte[] bytes = new Byte[bytesPrim.length];
    Arrays.setAll(bytes, n -> bytesPrim[n]);
    return bytes;
}

Byte[]残念ながら、これを実行して からに変換することはできませんbyte[]。 、、およびにArraysはありますが、他のプリミティブ型にはありません。setAlldouble[]int[]long[]

于 2014-06-16T22:50:32.113 に答える
16

ここで提案されているように、Apache Commons lang ライブラリ ArrayUtils クラスで toPrimitive メソッドを使用できます - Java - Byte[] to byte[]

于 2013-11-12T09:56:10.903 に答える
7
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;

}
于 2014-06-16T22:43:43.703 に答える
5

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];
    }
于 2012-10-17T22:34:12.080 に答える