java中的字符串到字节,反之亦然

时间:2012-04-18 05:44:55

标签: java string byte

我正在将byte []数组转换为字符串。然后将字符串转换回byte []数组。然后检查两个数组是否相等 - 我得到它们不相等:

 byte[] ciphertext2=c.doFinal(username.getBytes("utf-8"));
          //JUST CHECKING IGNORE
          String qaz=new String(ciphertext2,"utf-8");
          //qaz=qaz+"1";
          System.out.println("just chekcing------------------------"+qaz);
          byte[] ciphertext3=qaz.getBytes("utf-8");
          if(Arrays.equals(ciphertext2,ciphertext3))
          {
           System.out.println("just chekcing they are equal------------------------");
          }
          else
          System.out.println("just chekcing they are not equal------------------------");<br>

输出:

just chekcing they are not equal-------------------- 


为什么不起作用?
修改
使用java的Base64时,它完全正常。但是,为什么在将字节转换为字符串时不起作用,反之亦然?将字符串转换为字节数组时会发生什么,反之亦然?

1 个答案:

答案 0 :(得分:4)

如果这是加密的结果,则使用字符串构造函数。您没有编码文本 - 您有任意二进制数据。您需要了解基本上是文本的数据和需要以二进制表示的数据(例如,将文本文件写入磁盘)和基本上是二进制的数据以及需要在文本中表示的数据之间的区别(例如,包括加密数据) XML文档)。

您应该使用base64(例如使用this public domain library)或可能使用hex。这将导致ASCII数据保证往返原始二进制数据。