この記事のコードの一部は、インターネットから抜粋されており、バイトと16進数を変換するためにわずかに整理されています。
/** *参照apache commons <a * href = "http://commons.apache.org/codec/"> http://commons.apache.org/codec/ </a>したがって、1つのバイトを対応する2つの16進数文字に変換できます。つまり、高4ビットと低4ビットのバイトが、それぞれ対応する六分位文字hとLに変換され、結合されます。同じことが反対の変換にも当てはまります。 **/public class hex {/*** hex文字を確立するための出力*/private static final char = {'0'、 '1'、 '2'、 '3'、 '5'、 '6'、 '7'、 '8'、 '9'、 '、' b '、' c '' ' / ***ヘックス文字を確立するための出力*/プライベート静的最終char [] digits_lower = {'0'、 '1'、 '2'、 '3'、 '4'、 '5'、 '6、' 7 '、' 8 '、' 9 '、' a '、' b '、' c '、' d '' e '}; /***バイト配列を16進列の文字配列に変換します。 * * 2つの文字がバイトを表すために使用されるため、返されたchar []の長さはパラメーターバイトの長さの2倍になります。 * * @param data * byte [] hex文字に変換するために使用される * @return char [] hex文字を含む */ public static char [] encodehex(final byte [] data){return encodehex(data、true); } /***バイト配列を16進配列に変換します。 * * 2つの文字がバイトを表すために使用されるため、返されたchar []の長さはパラメーターバイトの長さの2倍になります。 * * @param data * byte [] hex文字への変換 * @param tolowercase * <code> true </code> loshcase形式への転送、<code> false </code> false </code> uppercase format * @return char [] @return char [] hex文字を含む */public static char [] encodehex(最終順序[] boolean tolowercase {] digits_lower:digits_upper); } /***バイト配列を16進配列に変換します。 * * 2つの文字がバイトを表すために使用されるため、返されたchar []の長さはパラメーターバイトの長さの2倍になります。 * * @param data * byte [] hex文字への変換 * @param todigits * alphabet for Output * @return char [] hex文字を含む */保護された静的char [] encodehex(final byte [] data、final char [] todigits){int l = data.length; char [] out = new char [l << 1]; // 2つの文字が六角値を形成します。 for(int i = 0、j = 0; i <l; i ++){out [j ++] = dodigits [(0xf0&data [i])>>> 4]; out [j ++] = dodigits [0x0f&data [i]]; }戻る; } /***バイト配列を16進列文字列に変換します。 * * 2つの文字がバイトを表すために使用されるため、返された文字列の長さはパラメーターバイトの長さの2倍になります。 * * @param data * byte [] hex文字への変換 * @return hex string */ public static string encodehexstr(final byte [] data){return encodehexstr(data、true); } /***バイト配列を16進ストリングに変換します。 * * 2つの文字がバイトを表すために使用されるため、返された文字列の長さはパラメーターバイトの長さの2倍になります。 * * @param data * byte [] hex文字への変換 * @param tolowercase * <code> true </code> loshcase形式への転送、<code> false </code> false </code> uppercase format * @return hexstring */public static string encodehexstr(byolean tolowercase _ digits_upper); } /***バイト配列を16進ストリングに変換します。 * * 2つの文字がバイトを表すために使用されるため、返された文字列の長さはパラメーターバイトの長さの2倍になります。 * * @param data * byte [] hex文字への変換 * @param todigits * bypput * @return hex string */ protected static string encodehexstr(byte [] data、char [] dodigits){return new string(encodehex(data、todigits)); } / ** * hex文字配列をバイト配列に変換 * * @param data * hex char [] * @return byte [] * @throws runtimexception *ソースヘックス文字アレイの長さが奇数の場合、ランタイム例外がスローされます。 if((len&0x01)!= 0){新しいruntimeexception( "奇数文字数。"); } //バイトは2つのヘックス文字に対応し、char [] byte [] out = new byte [] new byte [len >> 1]のサイズの半分にバイト[]サイズを設定します。 // 2つの文字が六角値を形成します。 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); }戻る; } /*** 16進数文字を整数に変換します。 * * @param ch * integersに変換される文字 * @paramインデックス *文字配列の文字の位置 * @return integer * @throws runtimexception * Chがこの例外をスローします */保護されたstatic int todigit(final chhar ch、final int index) if(digit == -1){throw new runtimeException( "Index" + indexで "違法な16進数" + ch + "); }桁を返します。 } public static void main(string [] args){string srcstr = "helloworld!"; string encodeStr = encodehexstr(srcstr.getBytes()、false); string decodeStr = new String(deCodeHex(encodeStr.TocharArray())); System.out.println( "Source String:" + srcstr); System.out.println( "標準エンコードHex:" + encodestr); System.out.println( "stringとしてデコードされた16進量:" + decodestr); }}