在java中重复从字节数组转换为字符串和字符串转换为字节数组

可能重复:
将byte []转换为String然后再转换为byte []

我有以下代码,我试图通过测试,但似乎无法理解java世界中各种forms的编码。

import java.util.Arrays; class Test { static final byte[] A = { (byte)0x11, (byte)0x22, (byte)0x33, (byte)0x44, (byte)0x55, (byte)0x66, (byte)0x77, (byte)0x88, (byte)0x99, (byte)0x00, (byte)0xAA }; public static void main(String[] args) { String s = new String(A); byte[] b = s.getBytes(); if (Arrays.equals(A,b)) { System.out.println("TEST PASSED!"); } else { System.out.println("TEST FAILED!"); } } } 

我想我的问题是:将任意字节的字节数组转换为Java字符串的正确方法是什么,然后将相同的Java字符串转换为另一个字节数组,该数组的长度与原始字节的内容相同arrays?

尝试特定的编码:

 String s = new String(A, "ISO-8859-1"); byte[] b = s.getBytes("ISO-8859-1"); 

意想不到的联系

使用Base64。

Apache Commons Codec有一个Base64类 ,它支持以下接口:

 String str = Base64.encodeBase64String(bytes); byte[] newBytes = Base64.decodeBase64(str);