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.
Vous devez vous connecter pour publier un commentaire.
Essayez ceci:
byteValue & 0xff
. Qui promeutbyteValue
à unint
et les masques tout signe d'extension qui pourrait avoir eu lieu.statiques les méthodes de l'utilitaire pour coder et décoder une chaîne donnée.