Java:从文件读取十六进制数字作为字节数组,然后将字节数组转换回十六进制字符串

时间:2015-11-11 00:11:31

标签: java arrays string hex bytearray

我正在处理的Java代码从文件读取十六进制数字作为字节数组,我的工作是将字节数组转换回十六进制字符串。为简单起见,我使用十六进制数字字符串并将其转换为字节数组:

String hexString = "333112";
byte[] byteArray = hexString.getBytes(); // this is equivalent to what I got from reading files containing hex string

然后我使用以下方法将字节数组转换回十六进制字符串(从另一个SO线程复制)

static final char[] hexArray = "0123456789ABCDEF".toCharArray();
    public static String getHex(byte[] raw) {

        if ( raw == null ) {
            return null;
        }
        char[] hexChars = new char[raw.length * 2];
        for ( int j = 0; j < raw.length; j++ ) {
            int v = raw[j] & 0xFF;
            hexChars[j * 2] = hexArray[v >>> 4];
            hexChars[j * 2 + 1] = hexArray[v & 0x0F];
        }
        return new String(hexChars);
    }


String originalHexStr = getHex(byteArray);
System.out.println(originalHexStr);

但是,上面的print语句输出:333333313132,它与原始的十六进制字符串333112不同。所以我必须遗漏一些明显的东西。谢谢你的帮助!

0 个答案:

没有答案