十进制转二、八、十六进制的字符串
十进制转换
这是我自己写的代码,有问题希望指出。没问题希望夸我几句,我会继续努力的,哈哈。
十进制转二进制
public void test() {
long dec = -9223372036854775807l;≈// -9223372036854775808 这个数不行,不要试
String binStr="";
long decAbs=Math.abs(dec);
while (decAbs>0){
binStr=(decAbs&1)+binStr;
decAbs>>=1;
}
binStr= dec<0?"-"+binStr:dec==0?"0":binStr;
System.out.println(binStr);
}
十进制转八进制
public void test(){
long dec=-0;//有-0 吗?
String octStr="";
long decAbs=Math.abs(dec);
while(decAbs>0){
octStr=(decAbs&7)+octStr;//
decAbs>>=3;
}
octStr=dec<0?"-"+octStr:dec==0?"0":octStr;
System.out.println(octStr);
}
十进制转十六进制
public void test() {
long dec = -1;//计算器的负数不会弄 -。-
String hexStr = "";
long decAbs = Math.abs(dec);
while (decAbs > 0) {
long lastFour = decAbs & 15;
if (lastFour > 9L) {
hexStr = (char) ('A' + lastFour - 10) + hexStr;
} else {
hexStr = lastFour + hexStr;
}
decAbs >>= 4;
}
hexStr = dec < 0 ? "-" + hexStr : dec == 0 ? "0" : hexStr;
System.out.println(hexStr);
}