package bs.util.tool.commongui.utils; /** * 进制转换类. * * <pre> * 特别说明:此处的字符皆为1个字节8位为1个转换单位,因此: * 1,1个字节转16进制为2位16进制,不足前面补零; * 2,1个字节转10进制为3位10进制,不足前面补零; * 3,1个字节转8进制为3位8进制,不足前面补零; * 这个类中的所有进制字符转换方法都是依据以上条件而定,当不满足以上条件时,程序会发生异常或不能得到预期结果! * </pre> */ public class RadixUtils { /** * 字符串前填充以满足固定长度. */ public static String fillStringBefore(String string, String fill, int size) { StringBuilder sb = new StringBuilder(); int len = string.length(); for (int i = 0; i < size - len; i++) { sb.append(fill); } return sb.append(string).toString(); } /** * 将16进制字符转为10进制字符. */ public static String convertRadixString16To10(String radix16) { StringBuilder sb = new StringBuilder(); for (int i = 0; i < radix16.length() / 2; i++) { sb.append(fillStringBefore(Integer.toString(Integer.valueOf(radix16.substring(i * 2, (i + 1) * 2), 16)), "0", 3)); } return sb.toString(); } /** * 将10进制字符转为16进制字符. */ public static String convertRadixString10To16(String radix10) { StringBuilder sb = new StringBuilder(); for (int i = 0; i < radix10.length() / 3; i++) { sb.append(Integer.toHexString(Integer.valueOf(radix10.substring(i * 3, (i + 1) * 3)))); } return sb.toString(); } /** * 将16进制字符转为8进制字符. */ public static String convertRadixString16To8(String radix16) { StringBuilder sb = new StringBuilder(); for (int i = 0; i < radix16.length() / 2; i++) { sb.append(fillStringBefore( Integer.toOctalString(Integer.valueOf(radix16.substring(i * 2, (i + 1) * 2), 16)), "0", 3)); } return sb.toString(); } /** * 将8进制字符转为16进制字符. */ public static String convertRadixString8To16(String radix8) { StringBuilder sb = new StringBuilder(); for (int i = 0; i < radix8.length() / 3; i++) { sb.append(Integer.toHexString(Integer.valueOf(radix8.substring(i * 3, (i + 1) * 3), 8))); } return sb.toString(); } /** * 将16进制字符转为2进制字符. */ public static String convertRadixString16To2(String radix16) { StringBuilder sb = new StringBuilder(); for (int i = 0; i < radix16.length(); i++) { sb.append(fillStringBefore(Integer.toBinaryString(Integer.valueOf(radix16.substring(i, i + 1), 16)), "0", 4)); } return sb.toString(); } /** * 将2进制字符转为16进制字符. */ public static String convertRadixString2To16(String radix2) { StringBuilder sb = new StringBuilder(); for (int i = 0; i < radix2.length() / 4; i++) { sb.append(Integer.toHexString(Integer.valueOf(radix2.substring(i * 4, (i + 1) * 4), 2))); } return sb.toString(); } }