데이터 전송을 위한 encode시 유용하게 사용하는 오래된 코드인데 정리해봤습니다. 제가 만든 예제에서도 가끔 사용하는 코드입니다.
Hex <-> Byte 간 형변환을 하는 코드입니다.
이러한 코드가 필요한 이유는 Byte가 화면에 출력 할 수 없는 경우가 있어서 이것을 다른쪽으로 데이터를 전달해 줄 때 화면상 어려움이 있어서 hex string형태로 변환하고 받는쪽에서는 다시 byte로 변환해서 사용하게됩니다.
예제
package testProject; public class HexToByte { public static void main(String[] args) { String data = "Hello."; byte bdata[] = data.getBytes(); String hex = byteArrayToHex(bdata); System.out.println(data); System.out.println(hex); byte bdataresult[] = hexToByteArray(hex); String data2 = new String(bdataresult); System.out.println(data2); } // hex string to byte[] public static byte[] hexToByteArray(String hex) { if (hex == null || hex.length() == 0) { return null; } byte[] ba = new byte[hex.length() / 2]; for (int i = 0; i < ba.length; i++) { ba[i] = (byte) Integer.parseInt(hex.substring(2 * i, 2 * i + 2), 16); } return ba; } // byte[] to hex sting public static String byteArrayToHex(byte[] ba) { if (ba == null || ba.length == 0) { return null; } StringBuffer sb = new StringBuffer(ba.length * 2); String hexNumber; for (int x = 0; x < ba.length; x++) { hexNumber = "0" + Integer.toHexString(0xff & ba[x]); sb.append(hexNumber.substring(hexNumber.length() - 2)); } return sb.toString(); } }
결과
Hello. 48656c6c6f2e Hello.
댓글 없음:
댓글 쓰기