Ein Teil des Codes in diesem Artikel wird aus dem Internet ausgerichtet und leicht organisiert, um zwischen Bytes und Hexadezimal umzuwandeln.
/** * Referenz Apache Commons <a * href = "http://commons.apache.org/codec/"> http://commons.apache.org/codec/ </a> * Byte belegt 8 Bits und Hexadezimalzeichen belegt 4 Bits. Daher kann ein Byte in zwei entsprechende hexadezimale Zeichen umgewandelt werden, dh die hohen 4 und niedrigen 4 -Bit -Bits werden in die entsprechenden hexadezimalen Zeichen H bzw. L umgewandelt und kombiniert. Gleiches gilt für die entgegengesetzte Transformation. **/public class hex {/*** Ausgabe für die Festlegung von Hex -Zeichen*/privat statische endgültige char [] digits_lower = {'0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'a', 'B', 'C', 'D', ',', ',', ',', ',', ',', ',', ',', ',', ',', ',', ',', ',', ',', ',', ',', ',', ',', ',', ',', ',', ',', ',', ',', ',', ',', ',', ',', ',', ',', ',', ',', ',', ',', ',', ',', '}; / *** Ausgabe für die Feststellung von Hex -Zeichen*/ privat statische endgültige char [] digits_lower = {'0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D', 'E', 'f'}; /*** Konvertieren Sie ein Byte -Array in ein hexadezimales Charakter -Array. * * Da zwei Zeichen verwendet werden, um ein Byte darzustellen, beträgt die zurückgegebene Länge der Länge des Parameter -Byte [] doppelt so hoch. * * @param data * byte [] wird verwendet, um in Hex -Zeichen zu konvertieren } /*** Konvertieren Sie ein Byte -Array in ein Hex -Charakter -Array. * * Da zwei Zeichen verwendet werden, um ein Byte darzustellen, beträgt die zurückgegebene Länge der Länge des Parameter -Byte [] doppelt so hoch. * * @param data * byte[] for converting to hex characters * @param toLowerCase * <code>true</code> Transfer to lowercase format, <code>false</code> Transfer to uppercase format* @return char[] containing hex characters */ public static char[] encodeHex(final byte[] data, final boolean toLowerCase) { return encodeHex(data, toLowerCase ? DIGITS_LOWER : Digits_upper); } /*** Konvertieren Sie ein Byte -Array in ein Hex -Charakter -Array. * * Da zwei Zeichen verwendet werden, um ein Byte darzustellen, beträgt die zurückgegebene Länge der Länge des Parameter -Byte [] doppelt so hoch. * * @param data * byte [] zum Konvertieren in Hex -Zeichen * @param todigits * Alphabet zur Steuerung der Ausgabe * @return char [] enthält hex -Zeichen */ geschütztes statisches char [] coddeHex (endgültige Byte [] data, endgültige char []. char [] out = new char [l << 1]; // Zwei Zeichen bilden den Hex -Wert. für (int i = 0, j = 0; i <l; i ++) {out [j ++] = todigits [(0xf0 & data [i]) >>> 4]; out [j ++] = todigits [0x0f & data [i]]; } kehre aus; } /*** Konvertieren Sie ein Byte -Array in eine hexadezimale Zeichenfolge. * * Da zwei Zeichen verwendet werden, um ein Byte darzustellen, beträgt die zurückgegebene Stringlänge die doppelte Länge des Parameter -Byte []. * * @param data * byte [] zum Konvertieren in Hex -Zeichen * @return hex string */ public static String codExstr (endgültig byte [] data) {return coddeHexstr (data, true); } /*** Konvertieren Sie ein Byte -Array in eine Hex -Zeichenfolge. * * Da zwei Zeichen verwendet werden, um ein Byte darzustellen, beträgt die zurückgegebene Stringlänge die doppelte Länge des Parameter -Byte []. * * @param data * byte [] zum Konvertieren in Hex -Zeichen * @param TolowerCase * <Code> True </code> in Kleinbuchstaben -Format, <code> Falsch </code> in Großbuchstaben übertragen * @Return hexString */public static String EncodeHexstr (Byte [] Data, BoolowerCases) {return bodeHexStr. Digits_upper); } /*** Konvertieren Sie ein Byte -Array in eine Hex -Zeichenfolge. * * Da zwei Zeichen verwendet werden, um ein Byte darzustellen, beträgt die zurückgegebene Stringlänge die doppelte Länge des Parameter -Byte []. * * @param data * byte [] zum Konvertieren in Hex -Zeichen * @param todigits * Alphabet zur Steuerung der Ausgabe * @return hex String */ Protected Static String EncodExstr (byte [] data, char [] to -Digits) {neuer String zurückgeben (encodehex (data, todigits)); } / ** * Sechs -Zeichen -Array in Byte -Array * * @param data * hex char [] * @return byte [] * @Throws RunTimeException * Wenn die Länge des Quell -Hex -Zeichenarray Array eine ungerade Zahl ist, wird eine Laufzeit -Ausnahme ausgeworfen * / öffentlich statisch byte [] decodehex (char] data [] data) {int len = data. if ((len & 0x01)! } // a Byte entspricht zwei Hex -Zeichen, setze das Byte [] die Hälfte der Größe von char [] byte [] out = new byte [len >> 1]; // Zwei Zeichen bilden den Hex -Wert. für (int i = 0, j = 0; j <len; i ++) {int f = Todigit (Daten [j], j) << 4; J ++; f = f | Todigit (Daten [j], j); J ++; out [i] = (byte) (f & 0xff); } kehre aus; } /*** Umwandeln Sie Hexadezimalzeichen in eine Ganzzahl. * * @param ch * Zeichen, die in Ganzzahlen konvertiert werden sollen if (digit == -1) {neue runimeexception werfen ("illegales hexadezimales Zeichen" + ch + "at index" + index); } return digit; } public static void main (String [] args) {String srcstr = "helloWorld!"; String codestern = encodeHexstr (srcstr.getBytes (), false); String decoDestern = new String (decodeHex (ccodeSt.toCharArray ())); System.out.println ("Quellzeichenfolge:" + srcstr); System.out.println ("Standard als Hex codiert:" + codestry); System.out.println ("hexadezimal dekodiert als String:" + decodestry); }}