将byte []的String表示形式转换回byte []

时间:2017-10-15 22:02:01

标签: java arrays base64

我有一个String变量说string,我将其转换为byte[],然后我使用Base64编码,byte[]说{{1} }}。使用以下代码:

encodedByteArr

输出是:

  

编码值为: - [B @ 5fd0d5ae

现在,我在另一个方法中收到与String string = "Test"; byte[] encodedByteArr= null; ByteArrayOutputStream bos = new ByteArrayOutputStream(); ObjectOutputStream oos = new ObjectOutputStream(bos); oos.writeObject(check); encodedByteArr= Base64.encodeBase64(bos.toByteArray()); oos.flush(); oos.close(); bos.close(); System.out.println("Encoded value is:- "+encodedByteArr); 相同的编码值,这意味着:

String

它只不过是我在上面的代码中生成的String string = "[B@5fd0d5ae"; String代表。

现在我的任务是实际解码该值并返回原始文本,即byte[]

为此,我希望"Test"的{​​{1}}代表回到String,而不会失去其完整性。

3 个答案:

答案 0 :(得分:0)

所有Java阵列都是这样打印的。这是他们的工作方式。如果要打印数组的内容,则必须使用java.util.Arrays中的静态方法。

System.out.println("Encoded value is:- "+Arrays.toString(encodedByteArr));

这有点愚蠢,但这就是它的工作方式。

答案 1 :(得分:0)

  

现在我的任务是实际解码该值并返回原始文本

听起来你有一个Base64编码的字符串要解码以产生原始字符串吗?

在Java 8中,你可以做到

driver.get('thewebsite');

loosers = driver.find_element(By.XPATH, ' //*[@id=");


loosers.send_keys('11');

driver.find_element(By.XPATH, ' //*[@id= ').click();``
sleep(30)

looser.send_keys('22');

driver.find_element(By.XPATH, ' //*[@id= ').click();
sleep(30)  

loosers.send_keys('33');

driver.find_element(By.XPATH, ' //*[@id= ').click();
sleep(30)  

looser.send_keys('44')
driver.find_element()(By.XPATH, ' //*[@id= ').click();
sleep(30)  

全程"往返"看起来像是:

import java.util.Base64;
byte[] decoded = Base64.getDecoder().decode(string);
String original = new String(decoded);

答案 2 :(得分:0)

System.out.println("decoded raw byte: ");
for (byte singleByte:encodedByteArr) {
    System.out.print((char)singleByte);
}

将字节的字符串表示形式返回到输出。
(效率不高)