-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

只需简单地使用已签名的 byte[] 即可,因为 java 中的 byte 已被签名。如果您想要这样的输出,则无需转换为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 回答