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