深入 JAVA里面关于byte数组和String之间的转换问题

原创 2013年12月02日 15:08:52

把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,其实就是其虚拟机地址 
  所以这个结果也就是顺理成章了.

Java String byte数组 字符集转换

转自:http://blog.csdn.net/aaronuu/article/details/7007386 1,byte[] str.getBytes(String charsetNam...
  • yxg190221
  • yxg190221
  • 2014年02月02日 21:57
  • 871

网络传输时,Java中byte[]转String问题

最近的项目中要使用到把byte[]类型转换成String字符串然后通过网络发送,但发现发现出去的字符串和获取的字符串虽然是一样的,但当用String的getBytes()的方法得到的byte[]跟原来...
  • hjxgood
  • hjxgood
  • 2014年02月27日 16:34
  • 9248

[Java]_[初级]_[utf8编码的byte[]数组转换为String时要注意的问题]

场景: 1. 通过socket给Java传递byte[]数组时,utf-8的字节数组在转换为String, Java并不会遇到0就停止结束,而是一直使用完byte[]的容量,所以在转换为Java的St...
  • infoworld
  • infoworld
  • 2015年03月30日 23:08
  • 16290

几种字符串到byte[] 数组转化为String 的方法

将Byte数组转化为String问题 FCL得很多方法的返回值都是包含字符的Byte数组而不是返回一个String,这样的方法包含在如下的类中: · System.Net.Sockets.Socket...
  • hustbill
  • hustbill
  • 2005年07月31日 21:50
  • 6888

字符串和字节数组互相转换,转换后数据不丢失

string a = Convert.ToBase64String(myByte); byte[] b = Convert.FromBase64String(a);
  • LUOCHENLONG
  • LUOCHENLONG
  • 2016年12月30日 16:06
  • 582

java中char与byte数组的转换

转自:http://hi.baidu.com/liu_ufo/blog/item/af0a330976df35ae2fddd4b4.html      我在用一个提取mp...
  • akiyame
  • akiyame
  • 2014年06月03日 09:39
  • 2974

String转化为byte[]和byte[]转化为String

(转载)http://stackoverflow.com/questions/6684665/java-byte-array-to-string-to-byte-array String coolS...
  • u010746364
  • u010746364
  • 2015年12月24日 12:00
  • 5075

Java 字节数组与String的相互转换错误

遇到的问题:Byte[]数组转化为String,String再转化成Byte数组时,两个字节数组长度不一。 问题描述:今天我在学习Java实现的RSA加密算法的时候,将加密后的字节数组用String来...
  • qq_16166139
  • qq_16166139
  • 2016年06月26日 16:49
  • 1192

基本数据类型、包装类、String类型之间的相互转换

@Test public void test2(){ //基本数据类型、包装类-->到String类型的转换,调用String类型的静态方法valueOf()即可 int i1 = 12; Strin...
  • XF777
  • XF777
  • 2017年05月22日 17:21
  • 355

Java之——基本数据类型与byte数组相互转化

我们直接上代码 package cn.com.eteamsun.utils; import java.nio.charset.Charset; /** * Java基本数据类型和byte数组相互...
  • l1028386804
  • l1028386804
  • 2016年12月22日 22:19
  • 1563
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深入 JAVA里面关于byte数组和String之间的转换问题
举报原因:
原因补充:

(最多只允许输入30个字)