Java base64 encode et decode

Je suis en train de coder byte[] à String, puis décoder ce String à byte[], mon code est:

byte[] aaa = new byte[1];
aaa[0] = (byte) 153;

String encoder = Base64.encodeBase64String(aaa);
System.out.println("encoder <<>> " + encoder);

//Decode the Base64 String.        
byte[] bytes = Base64.decodeBase64(encoder);
String decoder = new String(bytes, "UTF08");
System.out.println("decoder <<>> " + decoder );

Résultat est:

encoder <<>> mQ==
decoder <<>> ?

Le résultat ne sont pas les même. Pourquoi est-ce arrivé?

  • Bien sûr, il n'est pas le même. Vous êtes interpréter les octets en UTF-8, tout ce que vous voulez faire est d'imprimer la valeur de l'octet au lieu.
  • Comme nhatdh dit, il suffit de faire: Système.out.println (décodeur"<<>> " + octets[0]);
  • J'ai essayé, et j'ai l'impression de la valeur des octets, le résultat est -103, le code est:
  • -103 est ce que vous attendez. Java est byte type est signé, de sorte que la valeur maximale qu'il peut contenir est 127. Lorsque vous lancez 153 (un int) à un octet, vous obtenez le modèle binaire 10011001. S'il est interprété comme un deux-complément de ce nombre est -103.
InformationsquelleAutor TonyChou | 2013-04-11