プロトコル実装の際、送受信データをバイナリとアスキーの両方で確認したいことが多々あります。
標準出力で確認できるようテキスト(String)に変換するサンプルプログラムを作成しました。
public String hexDump(final byte[] data, int length) { if(data == null) { return "\r\n"; } // 指定長よりデータ長が短い場合はデータ長に合わせる if(length > data.length) { length = data.length; } int letters = 0; //文字数カウント StringBuilder binarySB = new StringBuilder(); StringBuilder asciiSB = new StringBuilder(); StringBuilder result = new StringBuilder(); Formatter formatter = new Formatter(binarySB); while(letters < length) { formatter.format("%04x ", letters); for(int column = 0; column < 16; column++, letters++) { if(letters < length) { formatter.format("%02x ", data[letters]); if(data[letters] >= 0x20 && data[letters] <= 0x7e) { asciiSB.append((char)data[letters]); } else { asciiSB.append('.'); } } else { binarySB.append(" "); } if(column == 7) { binarySB.append(" "); asciiSB.append(" "); } } result.append(binarySB).append(" ").append(asciiSB).append("\r\n"); binarySB.setLength(0); asciiSB.setLength(0); } formatter.close(); return result.append("\r\n").toString(); }