1000字范文,内容丰富有趣,学习的好帮手!
1000字范文 > java进制转换 字符串与16进制互转/数字进制互转

java进制转换 字符串与16进制互转/数字进制互转

时间:2019-08-30 15:15:58

相关推荐

java进制转换 字符串与16进制互转/数字进制互转

目录

十进制转其他进制

其他进制数字转十进制

字符串与16进制相互转换

十进制转其他进制

/*** 十进制转其他进制*/public static String conversion(Integer value, int sys) {String code = "";switch (sys) {case 2:code = Integer.toBinaryString(value);break;case 8:code = Integer.toOctalString(value);break;case 16:code = Integer.toHexString(value);break;default:code = Integer.toString(value, sys);break;}return code;}// 一个char[]对象private static char[] array = "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ".toCharArray();/*** 十进制转其他进制2*/public static String conversion2(int number, int n) {StringBuffer result = new StringBuffer("");// 模拟计算进制的过程while (number > 0) {result.insert(0, array[number % n]);number /= n;}return result.toString();}/*** 补0*/public static String supplement(String a) {// return String.format("%04d", a);StringBuffer sb = new StringBuffer("");for (int i = 0; i < 4 - a.length(); i++) {sb.append("0");}sb.append(a);return sb.toString();}

运行结果

public static void main(String[] args) {System.out.println(conversion(21,16)); // 15System.out.println(conversion2(21,16)); // 15System.out.println(supplement("20")); // 0020System.out.println(supplement("")); // 0000}

其他进制数字转十进制

/*** 其他进制数字转十进制* @param number 数字字符串* @param scale 数字字符串当前进制* @return 十进制数字*/public static int scale2Decimal(String number, int scale) {checkNumber(number);if (2 > scale || scale > 32) {throw new IllegalArgumentException("scale is not in range");}// 不同其他进制转十进制,修改这里即可int total = 0;String[] ch = number.split("");int chLength = ch.length;for (int i = 0; i < chLength; i++) {total += Integer.parseInt(ch[i]) * Math.pow(scale, chLength - 1 - i);}return total;}public static void checkNumber(String number) {String regexp = "^\\d+$";if (null == number || !number.matches(regexp)) {throw new IllegalArgumentException("input is not a number");}}

测试运行:

System.out.println(scale2Decimal("15",16)); // 21

字符串与16进制相互转换

/*** 字符串转换成为16进制*/public static String strToHexadecimal(String str) {char[] chars = "0123456789ABCDEF".toCharArray();StringBuilder sb = new StringBuilder("");byte[] bs = str.getBytes();int bit;for (int i = 0; i < bs.length; i++) {bit = (bs[i] & 0x0f0) >> 4;sb.append(chars[bit]);bit = bs[i] & 0x0f;sb.append(chars[bit]);}return sb.toString().trim();}/*** 16进制直接转换成为字符串*/public static String hexadecimalToStr(String hexStr) {String str = "0123456789ABCDEF";char[] hexs = hexStr.toCharArray();byte[] bytes = new byte[hexStr.length() / 2];int n;for (int i = 0; i < bytes.length; i++) {n = str.indexOf(hexs[2 * i]) * 16;n += str.indexOf(hexs[2 * i + 1]);bytes[i] = (byte) (n & 0xff);}return new String(bytes);}

运行结果:

public static void main(String[] args) {System.out.println(strToHexadecimal("AW的想法jcd12345")); // 4157E79A84E683B3E6B3956A63643132333435System.out.println(hexadecimalToStr(strToHexadecimal("AW的想法jcd12345"))); // AW的想法jcd12345}

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。