日期:2014-05-20  浏览次数:20709 次

关于Integer.toBinaryString(int i)的问题
今天想把一个IP中的每个数都转化成二进制表示:

结果 Integer.toBinaryString(0) //0:举个例子 (或者其他比较小的数) 输出之后位数都不足8位,这个就是输出“0”,所以就想了个办法:

String toBinary = Integer.toBinaryString(m) //假设m是我ip中的一段转化为int的数值
if(toBinary.length()<8){  
  for(int i=0;i<8-toBinary.length();i++)
  toBinary = "0"+toBinary; //在不足的位数前都加“0”
}

结果应该是 00000000 (或者其他八位)吧,但是实际结果是总是只有5位 ,求高手解答这是为什么???

------解决方案--------------------
Java code

String toBinary = Integer.toBinaryString(0); // 假设m是我ip中的一段转化为int的数值
        int length = toBinary.length();
        if(toBinary.length()<8){   
          for(int i=0;i<8-length;i++)
          toBinary = "0"+toBinary; // 在不足的位数前都加“0”
          System.out.println(toBinary);
        }

------解决方案--------------------
toBinary.length()会增加的 你在程序中打印他的值和i的值就明白了。
Java code
String toBinary = Integer.toBinaryString(m);// 假设m是我ip中的一段转化为int的数值
       while(toBinary.length() < 8){
        toBinary = "0" + toBinary; // 在不足的位数前都加“0”
       }