Parte do código deste artigo é extraído da Internet e ligeiramente organizado para converter entre bytes e hexadecimal.
/** * Referência do Apache Commons <a * href = "http://commons.apache.org/codec/"> http://commons.apache.org/codec/ </a> * Byte ocupa 8 bits, e os caracteres hexadecimais ocupa 4 bits. Portanto, um byte pode ser convertido em dois caracteres hexadecimais correspondentes, ou seja, os 4 bits de 4 e baixos 4 bits são convertidos nos caracteres hexadecimais correspondentes H e L, respectivamente, e combinados. O mesmo se aplica à transformação oposta. * */public class Hex { /** * Output for establishing hex characters*/ private static final char[] DIGITS_LOWER = { '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'a', 'b', 'c', 'd', 'e', 'f' }; / *** Saída para estabelecer caracteres hexáticos*/ private estático final char [] digits_lower = {'0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D', 'e', 'F'; /*** Converta uma matriz de bytes em uma matriz de caracteres hexadecimais. * * Como dois caracteres são usados para representar um byte, o comprimento de char [] retornado será o dobro do comprimento do parâmetro byte []. * * Dados @param * byte [] usado para converter em caracteres hexadecimais * @return char [] contendo caracteres hexáticos */ public static char [] EncodeHex (dados final byte [] dados) {return codeHex (dados, true); } /*** Converta uma matriz de bytes em uma matriz de caracteres hexadecimal. * * Como dois caracteres são usados para representar um byte, o comprimento de char [] retornado será o dobro do comprimento do parâmetro byte []. * * @param dados * byte [] para converter em caracteres hexadecimais * @param tolowercase * <code> true </code> transferir para o formato minúsculo, <code> false </code> transferir para o formato upcase * @return char [] contém caracteres hexosos */public sticty [] codeHex (dados finais, d'AtiCeLean, boolean tolwernCou0) Digits_upper); } /*** Converta uma matriz de bytes em uma matriz de caracteres hexadecimal. * * Como dois caracteres são usados para representar um byte, o comprimento de char [] retornado será o dobro do comprimento do parâmetro byte []. * * @param dados * byte [] para converter em caracteres hexáticos * @param Todigits * alfabeto para controlar a saída * @return char [] contendo caracteres hexáticos */ protegido char estático [] codeHex (dados final byte [], dados final [] toDigits) {int l = data.Length; char [] out = novo char [l << 1]; // Dois caracteres formam o valor hexadecimal. para (int i = 0, j = 0; i <l; i ++) {out [j ++] = Todigits [(0xf0 & dados [i]) >>> 4]; out [j ++] = Todigits [0x0f & dados [i]]; } retornar; } /*** Converta uma matriz de bytes em uma string hexadecimal. * * Como dois caracteres são usados para representar um byte, o comprimento da string retornado será o dobro do comprimento do parâmetro byte []. * * @param dados * byte [] para converter em caracteres hexáticos * @return hex string */ public static string codeHexstr (data byte final []) {return codeHexstr (dados, true); } /*** Converta uma matriz de bytes em uma string hexadecimal. * * Como dois caracteres são usados para representar um byte, o comprimento da string retornado será o dobro do comprimento do parâmetro byte []. * * @param dados * byte [] para converter em caracteres hexáticos * @param tolowercase * <code> true </code> transferir para o formato minúsculo, <code> false </code> transferir para formato de uppercase * @return hexstring */public static string codeHexstr (byte [], dados, boolean tolowercase) {return getterHex. } /*** Converta uma matriz de bytes em uma string hexadecimal. * * Como dois caracteres são usados para representar um byte, o comprimento da string retornado será o dobro do comprimento do parâmetro byte []. * * @param dados * byte [] para converter em caracteres hexadecimais * @param Todigits * alfabeto para controlar a saída * @return string hexáticos */ protegido String estático protegido EncodeHexstr (byte [] dados, char [] tigits) {return string (codeHex (dados, Todigits)); } / ** * Converta os caracteres hexáticos Matriz em matriz de bytes * * @param dados * hexáticos char [] * @return byte [] * @throws RunTimeException * Se a duração da matriz de caracteres hexadecimal de origem for um número ímpar, uma exceção de tempo de execução será atirada * / public static byte [] decodex (char [] dados) {int len = if ((len & 0x01)! = 0) {Throw New RunTimeException ("Número ímpar de caracteres."); } // Um byte corresponde a dois caracteres hexáticos, defina o tamanho [] [] para metade do tamanho do char [] byte [] out = new Byte [len >> 1]; // Dois caracteres formam o valor hexadecimal. for (int i = 0, j = 0; j <len; i ++) {int f = Todigit (dados [j], j) << 4; j ++; f = f | Todigit (Data [J], J); j ++; out [i] = (byte) (f & 0xff); } retornar; } /*** Converta caracteres hexadecimais em um número inteiro. * * @param ch * caracteres a serem convertidos em números inteiros * @param Índice * A posição do caractere na matriz de caracteres * @return a inteiro * @throws RunTimeException * Quando Ch não é um caráter hexadecimal legal, lança esta exceção */ protegida estática int toDigit (Final Char, Final Int Index) {Final Digit = Digit = if (digit == -1) {lança nova RunTimeException ("caractere hexadecimal ilegal" + ch + "no índice" + índice); } retornar dígito; } public static void main (string [] args) {string srcstr = "helloworld!"; String codester = codeHexstr (srcstr.getBytes (), false); String decodest = new String (decodehex (codest.toCharArray ())); System.out.println ("String de origem:" + srcstr); System.out.println ("padrão codificado como hexadecimal:" + codestr); System.out.println ("hexadecimal decodificado como string:" + decodester); }}