이 기사의 일부 코드는 인터넷에서 발췌하며 바이트와 16 진로 변환하도록 약간 구성되어 있습니다.
/** * 참조 apache commons <a * href = "http://commons.apache.org/codec/"> http://commons.apache.org/codec/ </a> * byte는 8 비트를 차지하고 16 진 문자는 4 비트를 차지합니다. 따라서, 하나의 바이트는 2 개의 상응하는 16 진 문자로 변환 될 수있다. 반대 변환에 동일하게 적용됩니다. **/public class hex {/*** 육각 문자를 설정하기위한 출력*/private static final char [] digits_lower = { '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'a', 'b', 'c', 'd', 'e', 'f'}; / *** 육각 문자를 설정하기위한 출력*/ private static final char [] digits_lower = { '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'a', 'b', 'c', 'd', 'e', 'f'}; /*** 바이트 배열을 16 진 문자 배열로 변환합니다. * * 두 문자는 바이트를 나타내는 데 사용되므로 반환 된 char [] 길이는 매개 변수 바이트의 길이의 두 배가됩니다 []. * * @param data * byte []는 16 진 문자로 변환하는 데 사용됩니다 * @return char [] hex 문자를 포함하는 */ public static char [] encodeHex (최종 바이트 [] data) {return encodeHex (data, true); } /*** 바이트 배열을 16 진 문자 배열로 변환합니다. * * 두 문자는 바이트를 나타내는 데 사용되므로 반환 된 char [] 길이는 매개 변수 바이트의 길이의 두 배가됩니다 []. * * @param data * byte [] hex 문자로 변환하기 위해 * @param tolowercase * <code> true </code> 소문자 형식으로 전송, <code> alfower </code> 각대 형식으로 전송 * @return char [] kodtic char [] encodeHex [] encodeHex [] encodeHex (final boolean) digits_upper); } /*** 바이트 배열을 16 진 문자 배열로 변환합니다. * * 두 문자는 바이트를 나타내는 데 사용되므로 반환 된 char [] 길이는 매개 변수 바이트의 길이의 두 배가됩니다 []. * * @param data * byte [] hex 문자로 변환하기 위해 * * @param todigits * @param todigits * alphabet * @return char [] 16 진 문자를 포함하는 알파벳 */ protected static char [] encodeHex (최종 바이트 [] data, final char [] todigits) {int l = data.length; char [] out = new char [l << 1]; // 두 문자가 16 진수를 형성합니다. for (int i = 0, j = 0; i <l; i ++) {out [j ++] = 유아 [(0xf0 & data [i]) >>> 4]; out [j ++] = 유아 [0x0f & data [i]]; } 리턴 아웃; } /*** 바이트 배열을 16 진수로 변환합니다. * * 두 문자는 바이트를 나타내는 데 사용되므로 반환 된 문자열 길이는 매개 변수 바이트 길이의 두 배입니다 []. * * @param data * byte [] hex 문자로 변환하기 위해 * @return hex string */ public static string encodeHexstr (최종 바이트 [] data) {return encodeHexstr (data, true); } /*** 바이트 배열을 육각 문자열로 변환합니다. * * 두 문자는 바이트를 나타내는 데 사용되므로 반환 된 문자열 길이는 매개 변수 바이트 길이의 두 배입니다 []. * * @param data * byte [] hex 문자로 변환하기위한 * * @param data * byte [] @param tolowercase * <code> true </code> 소문자 형식으로 전송, <code> upport </code> 대문자 형식으로 전송 * @return hexstring */public static string encodeHexstr (byte [] data, boolean tolowercase) {encodeHexStr (data, tollower)); } /*** 바이트 배열을 육각 문자열로 변환합니다. * * 두 문자는 바이트를 나타내는 데 사용되므로 반환 된 문자열 길이는 매개 변수 바이트 길이의 두 배입니다 []. * * @param data * byte [] hex 문자로 변환하기 위해 * * @param todigits * alphabet 출력을 제어하기위한 알파벳 * @return hex string */ protected static string encodeHexstr (byte [] data, char [] todigits) {새 문자열 (encodeHex (데이터, 토 디지털)); } / ** * 육각 문자 배열을 바이트 배열로 변환 * @param data * hex char [] * @return byte [] * @throws rows runtimeexception * 소스 헥스 문자 배열의 길이가 홀수 인 경우 런타임 예외는 * / public static byte [] decodeHex (char [] data) {int len = data.length; if ((len & 0x01)! = 0) {새 runtimeexception을 던지십시오 ( "홀수의 문자"); } // 바이트는 두 개의 16 진 문자에 해당하며 바이트 [] 크기를 char [] byte [] out = new Byte [len >> 1] 크기의 절반으로 설정합니다. // 두 문자가 16 진수를 형성합니다. for (int i = 0, j = 0; j <len; i ++) {int f = todigit (data [j], j) << 4; J ++; f = f | 유아 (데이터 [J], J); J ++; out [i] = (byte) (f & 0xff); } 리턴 아웃; } /*** 16 진 문자를 정수로 변환합니다. * * @param ch * 문자로 변환 될 수 있습니다 * @param index * 캐릭터 배열에서 문자의 위치 * @Therrows anteger * @throws runtimeexception * chulectecemential 캐릭터가 아닌 경우,이 예외가 없을 때 */ protected static int todigit (final char ch, final indec) {final int digit.digit (ch, 16); if (digit == -1) {throw new runtimeexception ( "index" + index에서 "불법 16 진 문자" + ch + "); } 리턴 숫자; } public static void main (String [] args) {String srcstr = "HelloWorld!"; 문자열 encodest = encodeHexstr (srcstr.getBytes (), false); 문자열 decodest = new String (decodeHex (encodest.tocharray ()); System.out.println ( "소스 문자열 :" + srcstr); System.out.println ( "16 진수로 인코딩 된 표준 :" + encodest); System.out.println ( "16 진수는 문자열로 디코딩 됨 :" + decodest); }}