바이트 배열 과 16 진 문자열 의 변환

    private static final char[] digits = {
	'0', '1', '2', '3', '4', '5', '6', '7',
	'8', '9', 'a', 'b', 'c', 'd', 'e', 'f'
	};

	public static String bytes2hex(byte[] bs)
	{
		char[] buf = new char[bs.length << 1];
		int i = bs.length, j = buf.length;
		while (i > 0)
		{
			buf[--j] = digits[bs[--i] & 0xF];
			buf[--j] = digits[bs[i] >>> 4 & 0xF];
		}
		return new String(buf, j, buf.length - j);
	}

	private static char c2c(char c)
	{
		if (c >= '0' && c <= '9')
		{
			c -= '0';
		} else if (c >= 'A' && c <= 'F')
		{
			c -= '7';
		} else
		{
			c -= 'W';
		}
		return c;
	}

	public static byte[] hex2bytes(String hex)
	{
		byte[] buf = new byte[hex.length() >>> 1];
		char[] chars = hex.toCharArray();
		for (int i = 0, j = 0; i < chars.length; i++)
		{
			buf[j++] = (byte) (c2c(chars[i]) << 4 | c2c(chars[++i]));
		}
		return buf;
	}

좋은 웹페이지 즐겨찾기