16進数文字列(String)を バイト配列(byte[])に変換

16進数の文字列をバイト配列に変換
個人で勉強してるとこういうのあんまりやらないんだけど、業務で必要になったので備忘録。下記サイトでお世話になりました。
http://d.hatena.ne.jp/winebarrel/20041012/p1

同じ事書くけど、万が一サイトがなくなったときを考えて、メモ。

public class HexUtil {

	/**
	 * バイト配列を16進数の文字列に変換する。
	 * 
	 * @param bytes バイト配列
	 * @return 16進数の文字列
	 */
	public static String asHex(byte bytes[]) {
		// バイト配列の2倍の長さの文字列バッファを生成。
		StringBuffer strbuf = new StringBuffer(bytes.length * 2);

		// バイト配列の要素数分、処理を繰り返す。
		for (int index = 0; index < bytes.length; index++) {
			// バイト値を自然数に変換。
			int bt = bytes[index] & 0xff;

			// バイト値が0x10以下か判定。
			if (bt < 0x10) {
				// 0x10以下の場合、文字列バッファに0を追加。
				strbuf.append("0");
			}

			// バイト値を16進数の文字列に変換して、文字列バッファに追加。
			strbuf.append(Integer.toHexString(bt));
		}

		/// 16進数の文字列を返す。
		return strbuf.toString();
	}

	/**
	 * 16進数の文字列をバイト配列に変換する。
	 * 
	 * @param hex 16進数の文字列
	 * @return バイト配列
	 */
	public static byte[] asByteArray(String hex) {
		// 文字列長の1/2の長さのバイト配列を生成。
		byte[] bytes = new byte[hex.length() / 2];

		// バイト配列の要素数分、処理を繰り返す。
		for (int index = 0; index < bytes.length; index++) {
			// 16進数文字列をバイトに変換して配列に格納。
			bytes[index] =
				(byte) Integer.parseInt(
					hex.substring(index * 2, (index + 1) * 2),
					16);
		}

		// バイト配列を返す。
		return bytes;
	}

  public static void main(String[] args) {
    byte[] bytes = {0x23, 0x0F};

    for(int i=0; i<bytes.length; i++) {


      System.out.print(Integer.toHexString(bytes[i]) + "\t");
    }

    System.out.println();

    String hex = asHex(bytes);

    System.out.println(hex);

    byte[] bytes2 = asByteArray(hex);

    for(int i=0; i<bytes2.length; i++) {


      System.out.print(Integer.toHexString(bytes2[i]) + "\t");
    }

    System.out.println();
  }

}

なんか昔C言語でこんなのやった記憶があるが・・忘れてた。
開発だとこういうの結構多様しそうです。