00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022 package com.realtime.crossfire.jxclient.util;
00023
00024 import org.jetbrains.annotations.NotNull;
00025
00030 public class HexCodec {
00031
00035 @NotNull
00036 private static final CharSequence HEX_CHARS = "0123456789abcdef";
00037
00041 private HexCodec() {
00042 }
00043
00049 public static void hexEncode2(@NotNull final StringBuilder sb, final int value) {
00050 sb.append(HEX_CHARS.charAt((value>>4)&15));
00051 sb.append(HEX_CHARS.charAt(value&15));
00052 }
00053
00059 private static void hexEncode4(@NotNull final StringBuilder sb, final int value) {
00060 hexEncode2(sb, value>>16);
00061 hexEncode2(sb, value);
00062 }
00063
00071 public static String hexDump(@NotNull final byte[] data, final int start, final int end) {
00072 final StringBuilder sb = new StringBuilder();
00073 for (int i = start; i < end; i += 16) {
00074 hexEncode4(sb, i-start);
00075 sb.append(':');
00076 for (int j = i; j < i+16 && j < end; j++) {
00077 sb.append(' ');
00078 hexEncode2(sb, data[j]);
00079 }
00080 sb.append('\n');
00081 }
00082 return sb.toString();
00083 }
00084
00085 }