java - 用于短裤而不是字节的 ByteArrayOutputStream

标签 java short bytearrayoutputstream

我使用了非常有用的 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 设备

在使用中阅读:

ByteArrayInputStreamDataInputStream 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/

相关文章:

java - 在java中生成短随机数?

JAVA无法将int转换为short

java - 如何调用带有短参数的方法?

java - 在 Android 应用程序中关闭 ByteArrayOutputStream

Java 空指针异常

java - 如何将 java.lang.Class<Mapper> 转换为 java.lang.class<TableMapper>

java - antlr 返回值作为键值

java - HttpClient : ssl handshake on every request

java.io.EOFException : Unexpected end of ZLIB input stream when using ByteArrayOutputStream in try-with-resources

java - ByteArrayInputStream/ByteArrayOutputStream的实际使用