我使用了非常有用的 ByteArrayOutputStream,但是对于我的需要来说,限制太大了(即我正在处理 +-32,768 范围内的数字)
这是我要使用它的代码:
ByteArrayOutputStream leftStream = new ByteArrayOutputStream();
ByteArrayOutputStream rightStream = new ByteArrayOutputStream();
while (din.read(temp, 0, 4) != -1) {
if (decodedFormat.getChannels() == 2) {
leftStream.write(temp[1] * 256 + temp[0]);
rightStream.write(temp[3] * 256 + temp[2]);
}
}
byte[] left = leftStream.toByteArray();
byte[] right = rightStream.toByteArray();
但是 ByteArrayInputStream 不允许超过 127 或低于 128 的值。是否有允许短路的等效 ShortArrayOutputStream?还是我必须以某种方式自己制作一个?
最佳答案
是的,使用 DataOutputStream:
ByteArrayOuputStream bos = new ByteArrayOutputStream();
DataOutputStream dos = new DataOutputStream(bos);
dos.writeShort(val);
这甚至适用于 Java 1.3 版本较低的嵌入式 Java 设备
在使用中阅读:
ByteArrayInputStream
和 DataInputStream
dis, and dis.readShort()
:
...
byte[] bytes = bos.toByteArray();
ByteArrayInputStream bis = new ByteArrayInputStream(bytes);
DataInputStream dis = new DataInputStream(bis);
short val = dis.readShort();
关于java - 用于短裤而不是字节的 ByteArrayOutputStream,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22516923/