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"); } } }
时间: 2024-12-24 18:57:32