我将一个byte []数组转换为字符串。然后将字符串转换回byte []数组。然后在检查如果两个数组相等, - 我让他们不相等:
字符串到byte和viceversa在java中
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>
OUTPUT:
just chekcing they are not equal--------------------
为什么它不工作?
编辑
当使用java的Base64时,它工作得很好。但是,为什么直接将字节转换为字符串并反之亦然?将字符串转换为字节数组时实际发生了什么?反之亦然?
您的字节可能无效utf-8。当它们被解析为utf-8字符串时,无效序列会变成有效的utf-8序列,因此字节数组是不同的。 Base64保证是有效的utf-8(它毕竟是ascii的超集)。 – bdares 2012-04-18 05:50:46
@bdares:如何将字节数组转换为字符串?里面会发生什么? – Ashwin 2012-04-18 05:54:28
如果我对用户名的值进行了硬编码,我会将其设置为true。 – UVM 2012-04-18 05:57:57