我有一个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
,而不会失去其完整性。
答案 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);
}
将字节的字符串表示形式返回到输出。
(效率不高)