Java进制转换之掩码运算(二)

上一次我写了一篇进制转的文章,这次我把学到的分享给大家,是掩码运算的综合运用。方法写的很巧妙,充分利用了代码重用。

public class Demo9 {public static String toString(int num, int n) {//整数转字符串进制通法char[] ch = { '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'a','b', 'c', 'd', 'e', 'f' };int mask=~(-1<<n);char[] buf=new char[32/n+1];int i=buf.length-1;while(num!=0) {buf[i--]=ch[mask&num];num>>>=n;}return new String(buf,i+1,buf.length-(i+1));}public static String toHexString(int num) {//整数转十六进制字符串return toString(num,4);}public static String toOctString(int num) {//整数转八进制字符串return toString(num,3);}public static String toBinString(int num) {//整数转二进制字符串return toString(num,1);}public static int parseString(String str,int n) {//字符串转整数通法int sum=0;for(int i=0;i<str.length();i++) {char c=str.charAt(i);int num=c>'a'&&c<='f'?c-'a'+10:c-'0';sum=(sum<<n)|num;}return sum;}public static int parseHexString(String str) {//字符串转十六进制整数return parseString(str,4);}public static int parseOctString(String str) {//字符串转八进制整数return parseString(str,3);}public static int parseBinString(String str) {//字符串转二进制整数return parseString(str,1);}public static void main(String[] args) { System.out.println(toBinString(10));System.out.println(toHexString(40));System.out.println(toOctString(40));System.out.println(parseHexString("4e2d"));System.out.println(parseOctString("10"));System.out.println(parseBinString("10"));}}

总结:整数转字符串,主要运用到了掩码运算,int mask=~(-1<<n);这句是关键。

字符串转整数,主要是a-f的判断,记住了0字符不等于整数0的值,就可以了。

在乎的应该是沿途的风景以及看风景的心情。

Java进制转换之掩码运算(二)

相关文章:

你感兴趣的文章:

标签云: