ByteArrayOutputStream baos =
new ByteArrayOutputStream();
DataOutputStream dos =
new DataOutputStream(baos);
try {
dos.writeDouble(Math.random());
dos.writeBoolean(true); ByteArrayInputStream bais =
new ByteArrayInputStream(baos.toByteArray());
DataInputStream dis = new DataInputStream(bais); System.out.println(dis.readDouble());
System.out.println(dis.readBoolean()); dos.close(); dis.close();
}
catch (IOException e) {
e.printStackTrace();}如上一个简单的例子,API说ByteArrayOutputStream()是将数据写入到byte数组中,可是套上了DataOutputStream就往里面写其他类型的数据,byte数组中难道是可以装byte类型以外的数据类型吗? 其他类型的数组也可以装类型不同的数据吗? 可能我的问题比较菜,大家见笑了。 请各位指点一二,thanks!
new ByteArrayOutputStream();
DataOutputStream dos =
new DataOutputStream(baos);
try {
dos.writeDouble(Math.random());
dos.writeBoolean(true); ByteArrayInputStream bais =
new ByteArrayInputStream(baos.toByteArray());
DataInputStream dis = new DataInputStream(bais); System.out.println(dis.readDouble());
System.out.println(dis.readBoolean()); dos.close(); dis.close();
}
catch (IOException e) {
e.printStackTrace();}如上一个简单的例子,API说ByteArrayOutputStream()是将数据写入到byte数组中,可是套上了DataOutputStream就往里面写其他类型的数据,byte数组中难道是可以装byte类型以外的数据类型吗? 其他类型的数组也可以装类型不同的数据吗? 可能我的问题比较菜,大家见笑了。 请各位指点一二,thanks!
System.out.print(Arrays.toString(baos.toByteArray()));
- -
0.5596516700236561
true楼上的朋友,这是我加了System.out.print(Arrays.toString(baos.toByteArray()));后的运行结果。上面是打印了一个字节数组,数组长度也正好是9个byte,和一个double + 一个boolean得长度相同。 不过我不太明白你的意思呵呵,我比较笨。能说清楚一点吗?
使用 Double 类中的 doubleToLongBits 方法将 double 参数转换为一个 long 值,然后将该 long 值以 8-byte 值形式写入基础输出流中,先写入高字节。