hyetpang 2016-03-15 14:08 采纳率: 39.4%
浏览 6239
已采纳

关于java输出流ByteArrayOutputStream的toString()方法

import java.io.*;

public class ByteArrayOutputStreamtoString {
public static void main(String[] args){
ByteArrayOutputStream baos = new ByteArrayOutputStream();
DataOutputStream dos = new DataOutputStream(baos);
try{
dos.writeBoolean(true);
dos.writeDouble(2.345456);
dos.writeFloat(1.234354f);
String s = baos.toString();
System.out.println(s);
}catch(IOException e){
e.printStackTrace();
}
}
}


他的输出为什么是“@�~oq��?��P”这样的乱码?,还有toString()这个方法的用法是什么?是用来干什么的呢?

  • 写回答

3条回答

  • 藏红 2016-03-16 02:21
    关注

    不是这样用的 , ByteArrayOutputStream 存的是字节数组, toString 只是简单的把里面的 byte数组转成了字符串。程序可不知道你要怎么解析 byte。
    出现乱码很正常。 下面给你正确的用法

    import java.io.ByteArrayOutputStream;
    import java.io.DataOutputStream;
    import java.io.IOException;
    
    /**
     * Created by chenhong on 16/3/10.
     */
    public class Main {
    
        public static void main(String[] args){
    
            ByteArrayOutputStream baos = new ByteArrayOutputStream();
            DataOutputStream dos = new DataOutputStream(baos);
            try{
    
    
                dos.writeBoolean(true);  //boolean 1位
                dos.writeInt(2); // int 32位   4字节
                dos.writeFloat(1.234354f); // float 32位   32字节
    
                byte[] bArray = baos.toByteArray();
                System.out.println("共"+bArray.length+"字节");
                for (int i = 0; i < bArray.length; ++i){
                        System.out.println(bArray[i]+" ");
                }
    
    
    
            }catch(IOException e){
                e.printStackTrace();
            }
        }
    }
    
    
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

悬赏问题

  • ¥15 素材场景中光线烘焙后灯光失效
  • ¥15 请教一下各位,为什么我这个没有实现模拟点击
  • ¥15 执行 virtuoso 命令后,界面没有,cadence 启动不起来
  • ¥50 comfyui下连接animatediff节点生成视频质量非常差的原因
  • ¥20 有关区间dp的问题求解
  • ¥15 多电路系统共用电源的串扰问题
  • ¥15 slam rangenet++配置
  • ¥15 有没有研究水声通信方面的帮我改俩matlab代码
  • ¥15 ubuntu子系统密码忘记
  • ¥15 保护模式-系统加载-段寄存器