BinTools 十六进制转换

package de.rtner.misc;

public class BinTools {
    public static final String hex = "0123456789ABCDEF";

    public BinTools() {
        super();
    }

    public static String bin2hex(byte[] arg5) {
        String v0;
        if(arg5 == null) {
            v0 = "";
        }
        else {
            StringBuffer v1 = new StringBuffer(arg5.length * 2);
            int v0_1;
            for(v0_1 = 0; v0_1 < arg5.length; ++v0_1) {
                int v2 = (arg5[v0_1] + 256) % 256;
                v1.append("0123456789ABCDEF".charAt(v2 / 16 & 15));
                v1.append("0123456789ABCDEF".charAt(v2 % 16 & 15));
            }

            v0 = v1.toString();
        }

        return v0;
    }

    public static int hex2bin(char arg3) {
        int v0;
        if(arg3 < 48 || arg3 > 57) {
            if(arg3 >= 65 && arg3 <= 70) {
                return arg3 - 55;
            }

            if(arg3 >= 97 && arg3 <= 102) {
                return arg3 - 87;
            }

            goto label_20;
        }
        else {
            v0 = arg3 - 48;
        }

        return v0;
    label_20:
        throw new IllegalArgumentException(new StringBuffer().append("Input string may only contain hex digits, but found \'")
                .append(arg3).append("\'").toString());
    }

    public static byte[] hex2bin(String arg5) {
        int v0 = 0;
        if(arg5 == null) {
            arg5 = "";
        }
        else if(arg5.length() % 2 != 0) {
            arg5 = new StringBuffer().append("0").append(arg5).toString();
        }

        byte[] v2 = new byte[arg5.length() / 2];
        int v1 = 0;
        while(v1 < arg5.length()) {
            int v3 = v1 + 1;
            char v4 = arg5.charAt(v1);
            v1 = v3 + 1;
            v2[v0] = ((byte)(BinTools.hex2bin(arg5.charAt(v3)) + BinTools.hex2bin(v4) * 16));
            ++v0;
        }

        return v2;
    }

    public static void main(String[] arg5) {
        int v4 = 256;
        int v0 = 0;
        byte[] v3 = new byte[v4];
        byte v1;
        for(v1 = 0; v0 < v4; v1 = ((byte)(v1 + 1))) {
            v3[v0] = v1;
            ++v0;
        }

        String v0_1 = BinTools.bin2hex(v3);
        if(!v0_1.equals(BinTools.bin2hex(BinTools.hex2bin(v0_1)))) {
            throw new AssertionError("Mismatch");
        }
    }
}

 

posted on 2015-11-21 23:16  寻步  阅读(652)  评论(0编辑  收藏  举报