zoukankan      html  css  js  c++  java
  • 深入 JAVA里面关于byte数组和String之间的转换问题

    把byte转化成string,必须经过编码。 
      例如下面一个例子: 
      

    importjava.io.UnsupportedEncodingException; 
      publicclass test{ 
      publicstatic void main(String g[]) { 
      Strings = "12345abcd"; 
      byteb[] = s.getBytes(); 
      Stringt = b.toString(); 
      System.out.println(t); 
      } 
      } 


      输出字符串的结果和字符串s不一样了. 
      经过以下方式转码就可以正确转换了: 
      
    publicclass test{ 
      publicstatic void main(String g[]) { 
      Strings = "12345abcd"; 
      byteb[] = s.getBytes(); 
      try{ 
      Stringt = new String(b); 
      System.out.print(t); 
      }catch (Exception e) { 
      e.printStackTrace(); 
      } 
      } 
      } 

     Stringstr = "String"; 
      byte[]byte1 = str.getBytes(); 
      Stringstr1 = new String(byte1); 
      byte[]byte2 = str1.getBytes(); 
      Stringstr2 = new String(byte2); 
      System.out.println("str<<<"+ str); 
      System.out.println("byte1<<<"+ byte1); 
      System.out.println("str1<<<"+ str1); 
      System.out.println("byte2<<<"+ byte2); 
      System.out.println("str2<<<"+ str2); 


     
      ------------------------------------- 
      输出结果 
      str<<<String 
      byte1<<<[B@192d342 
      str1<<<String 
      byte2<<<[B@6b97fd 
      str2<<<String 
      想请教为什么两个byte输出的不一样呢? 
      Stringstr = "String"; 
      byte[]byte1 = str.getBytes(); 
      Stringstr1 = new String(byte1); 
      byte[]byte2 = str1.getBytes(); 
      ---------- 
      注意byte1是str得到的byte数组,而byte2是另一个字符串str1得到的数组 
      他们本身也是两个对象 
      直接打印实际上调用的是toString()方法,而toString()的默认实现是打印对象类型+hashCode() 
      [B表示byte数组 
      @表示之后的是地址 
      后面跟着的是hashCode,其实就是其虚拟机地址 
      所以这个结果也就是顺理成章了.

  • 相关阅读:
    Jquery操作select
    Session在类库中的使用
    从一个表取数据更新另一个表的信息
    判断数据库表中是否存在某个字段
    .net项目中上传的图片或者文件太大 无法上传
    计算机中丢失 msvcr110.dlll
    Ubuntu搭建FTP server
    Linux常用命令集
    系统清理篇
    ubuntu安装 ssh server
  • 原文地址:https://www.cnblogs.com/xiaowangba/p/6314213.html
Copyright © 2011-2022 走看看