-1

short入力として、{20, 250, 12, 255} のような配列を取得しています。
それを byte[] {20,-6,12,-1}
に変換する必要があります ByteBuffer を使用しようとしました:

    short[] data = {20, 250, 12, 255};     
    ByteBuffer dbuf = ByteBuffer.allocate(data.length*2);
    dbuf.asShortBuffer().put(data);
    byte[] array = dbuf.array();

しかし、出力は次のようにフォーマットされています: {0,20,0,-6,0,12,0,-1}
{20,-6,12,-1} のような符号付きバイト配列を取得するには?

4

1 に答える 1

3

Javaのバイトが署名されているため、署名されたバイト[]を使用するだけです。そのような出力が必要な場合は、short に変換する必要はありません。


以下は、できない場合の変換メカニズムです。

配列をループし、ダウン キャストを実行します。

    short[] data = { 20, 250, 12, 255 };
    byte[] bytes = new byte[data.length];
    int count = 0;
    for (short i : data) {
        bytes[count++] = (byte)i;
    }
    System.out.println(Arrays.toString(bytes));

出力:

[20, -6, 12, -1]
于 2012-10-31T19:50:33.483 に答える