を に変換するこのメソッドについて、最初にいくつか質問がint[]
ありbyte[]
ます。
public static byte[] intToByte(int[] input){
ByteBuffer byteBuffer = ByteBuffer.allocate(input.length * 4);
IntBuffer intBuffer = byteBuffer.asIntBuffer();
intBuffer.put(input);
byte[] array = byteBuffer.array();
return array;
}
私はゲームを作っており、ソケットを介してバイト配列を送信する必要があります。この方法は基本的に機能するので気に入っていますが、何をしているのか本当に理解していないものは使用したくありません。このメソッドは何をしていますか?最初にビットに十分なスペースを作成すると思いますが、なぜ長さの 4 倍を行うのでしょうか? また、intBuffer は byteBuffer に接続されていますか? そうでない場合、なぜすべての Intbuffer が必要なのですか。
最後の質問BIG_ENDIAN
ですLITTLE_ENDIAN
。たとえば、バイト配列を int 配列に変換する私の他の方法では、含める利点は何.order(BIG_ENDIAN)
ですか?
public static int[] byteToInt(byte[] input){
IntBuffer intBuf = ByteBuffer.wrap(input).order(ByteOrder.BIG_ENDIAN).asIntBuffer();
int[] array = new int[intBuf.remaining()];
intBuf.get(array);
return array;
}
バイトがどのように順序付けられているかを知っBIG_ENDIAN
てLITTLE_ENDIAN
いて指示するだけですが、なぜエンディアンを定義するのですか? なぜこれを持っていないのですか?
IntBuffer intBuf = ByteBuffer.wrap(input).asIntBuffer();