Une partie du code de cet article est extraite sur Internet et légèrement organisée pour convertir entre octets et hexadécimal.
/ ** * Référence Apache Commons <a * href = "http://commons.apache.org/codec/"> http://commons.apache.org/codec/ </a> * octet occupe 8 bits et les caractères hexadécimaux occupent 4 bits. Par conséquent, un octet peut être converti en deux caractères hexadécimaux correspondants, c'est-à-dire que les 4 bits 4 et bas d'octets élevés sont convertis en les caractères hexadécimaux H et L correspondants respectivement et combinés. Il en va de même pour la transformation opposée. * * / public class hex {/ ** * Sortie pour établir des caractères hexadécimaux * / private static final char [] digits_lower = {'0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'a', 'b', 'C', ',', ',' f '' '' '; / ** * Sortie pour établir des caractères hexares * / private static final char [] Digits_lower = {'0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'a', 'b', 'c', 'd', 'e', 'f'}; / ** * Convertir un tableau d'octets en un tableau de caractères hexadécimal. * * Parce que deux caractères sont utilisés pour représenter un octet, la longueur de char [] retournée sera deux fois la longueur de l'octet du paramètre []. * * @param data * byte [] utilisé pour se convertir en caractères hexadécimaux * @return char [] contenant des caractères hexadécimaux * / public static char [] encodehex (data byte [] final) {return encodeHex (data, true); } / ** * Convertir un tableau d'octets en un tableau de caractères hexagonal. * * Parce que deux caractères sont utilisés pour représenter un octet, la longueur de char [] retournée sera deux fois la longueur de l'octet du paramètre []. * * @param data * octet [] pour convertir en caractères hexadécimaux * @param tolowercase * <code> true </code> transférer au format minuscule, <code> false </code> transfert au format majuscule * @return char [] contenant des caractères hexares * / public static char [] Encodehex (data, data, toolen tooletcase) {return wadinehx (data, toherpase? Digits_upper); } / ** * Convertir un tableau d'octets en un tableau de caractères hexagonal. * * Parce que deux caractères sont utilisés pour représenter un octet, la longueur de char [] retournée sera deux fois la longueur de l'octet du paramètre []. * * @param data * byte [] pour convertir en caractères hexadécimaux * @param todigits * alphabet pour contrôler la sortie * @return char [] contenant des caractères hexadécimaux * / protégé de char [] encodéhex (data final byte [], char [] todigits) {int l = data.length; char [] out = new char [l << 1]; // Deux caractères forment la valeur hexagonale. for (int i = 0, j = 0; i <l; i ++) {out [j ++] = todigits [(0xf0 & data [i]) >>> 4]; out [j ++] = todigits [0x0f & data [i]]; } return out; } / ** * Convertir un tableau d'octets en une chaîne hexadécimale. * * Parce que deux caractères sont utilisés pour représenter un octet, la longueur de chaîne retournée sera deux fois la longueur de l'octet du paramètre []. * * @param data * byte [] pour la conversion en caractères hexagonaux * @return Hex String * / public static String encodehexstr (final byte [] data) {return encodehexstr (data, true); } / ** * Convertir un tableau d'octets en une chaîne hexagonale. * * Parce que deux caractères sont utilisés pour représenter un octet, la longueur de chaîne retournée sera deux fois la longueur de l'octet du paramètre []. * * @param data * byte [] pour convertir en caractères hexadécimaux * @param tolowercase * <code> true </code> transférer au format minuscule, <code> false </code> transfert au format en majuscules * @return hexstring * / public static encodehexstr (byte [] data, boolean tolapercase) {return ecodehextr (data, toloncasse? nicit_lower: Digits_upper); } / ** * Convertir un tableau d'octets en une chaîne hexagonale. * * Parce que deux caractères sont utilisés pour représenter un octet, la longueur de chaîne retournée sera deux fois la longueur de l'octet du paramètre []. * * @param data * byte [] pour la conversion en caractères hexadécimaux * @param todigits * alphabet pour contrôler la sortie * @return hex string * / protected Static String encodehexstr (byte [] data, char [] todigits) {return new String (EncodeHex (data, todigits)); } / ** * Convertir le tableau des caractères hexadécimaux en tableau d'octets * * @param data * hex char [] * @return byte [] * @throws runtimeException * Si la longueur du tableau de caractères hex est un nombre impair, une exception d'exécution sera lancée * / Data. if ((Len & 0x01)! = 0) {Throw New RuntimeException ("Nombre impair de caractères."); } // Un octet correspond à deux caractères hexadécimaux, définissez la taille de l'octet [] à la moitié de la taille de char [] octet [] out = nouveau octet [len >> 1]; // Deux caractères forment la valeur hexagonale. for (int i = 0, j = 0; j <len; i ++) {int f = todigit (data [j], j) << 4; j ++; f = f | todigit (data [j], j); j ++; out [i] = (byte) (f & 0xff); } return out; } / ** * Convertir les caractères hexadécimaux en entier. * * @param ch * Caractères à convertir en entiers * @param index * La position du caractère dans le tableau des caractères * @return un entier * @throws runtimeException * Lorsque CH n'est pas un caractère hexadécimal juridique, lancez cette exception * / statistique statique protégée (Ch, ch, 16); if (numérique == -1) {lancez new RuntimeException ("caractères hexadécimaux illégaux" + ch + "à index" + index); } RETOUR DIGIT; } public static void main (String [] args) {String srcstr = "Helloworld!"; String encodestr = EncodeHexstr (srcstr.getbytes (), false); String decodestrest = new String (decodehex (Encodestr.toCharArray ())); System.out.println ("Source String:" + Srcstr); System.out.println ("Encodé standard en tant qu'hex:" + Encodestr); System.out.println ("HexaDecimal Decoded comme String:" + Decodestr); }}