在Java中将短数组转换为带符号的字节数组

时间:2012-10-31 19:46:41

标签: java arrays collections byte primitive

作为输入,我得到一个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}这样的有符号字节数组?

1 个答案:

答案 0 :(得分:3)

只需简单地使用已签名的byte [],因为java中的字节是有问题的。如果你想要那样的输出,就没有必要转换为简短。


下面只是转换机制,如果你不能。

循环数组并进行向下投射。

    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]