用Integer.parseInt(hex, 16)转换非常长的数据时,会报错;
原因是因为:Integer在32位的编译环境下,存储长度为32位。即-231~231-1; 即-2,147,483,648~2,147,483,647,此时将Integer换成BigInteger类型,问题解决
解决长数据类型之间的进制转换问题:
String a=new BigInteger(hex,16).toString(2);
//这表示16进制的hex字符串,转换为2进制的字符串;依葫芦画瓢,其他的进制转换也是一样;
进制转换
public static String toBinary(String str){
//把字符串转成字符数组
char[] strChar=str.toCharArray();
String result="";
for(int i=0;i<strChar.length;i++){
//toBinaryString(int i)返回变量的二进制表示的字符串
//toHexString(int i) 八进制
//toOctalString(int i) 十六进制
result +=Integer.toBinaryString(strChar[i]);
// result +=Integer.toBinaryString(strChar[i]);
}
return result;
}