十进制转二、八、十六进制的字符串

十进制转换

这是我自己写的代码,有问题希望指出。没问题希望夸我几句,我会继续努力的,哈哈。

十进制转二进制

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);
}
posted @ 2017-02-06 21:22  菊花缝纫师  阅读(239)  评论(0编辑  收藏  举报