在java中如何把整数或浮点数据用二进制的形式显示出来
有没有相关的方法?

解决方案 »

  1.   

    Integer.toBinaryString(int i);
    Double.doubleToRawLongBits(double value)
      

  2.   

    Double.toHexString(double d);
    然后再自己解析成二进制吧
      

  3.   

    楼上兄弟
    java里有直接的方法把十六进制转成二进制么?或者把十六进制转换成十进制的
      

  4.   

    十六进制转换成十进制:Integer.valueOf("FFFF",16).toString()
      

  5.   

    public static void bin(byte b) {
    char[] charBits = toCharBits(b, 8);
    outputWholeBits(charBits);
    }public static void bin(char b) {
    char[] charBits = toCharBits(b, 16);
    outputWholeBits(charBits);
    }public static void bin(short b) {
    char[] charBits = toCharBits(b, 16);
    outputWholeBits(charBits);
    }public static void bin(int b) {
    char[] charBits = toCharBits(b, 32);
    outputWholeBits(charBits);
    }public static void bin(long b) {
    char[] charBits = toCharBits(b, 64);
    outputWholeBits(charBits);
    }public static void bin(float a) {
    char[] charBits = toCharBits(Float.floatToIntBits(a), 32);
    outputFloatBits(charBits);
    }

    public static void bin(double a) {
    char[] charBits = toCharBits(Double.doubleToLongBits(a), 64);
    outputDoubleBits(charBits);
    }//转二进制数组
    static char[] toCharBits(long num, int size) {
    char[] charBits = new char[size];
    for (int i = size-1; i >= 0; --i) {
        charBits[i] = (num & 1) == 0 ? '0' : '1';
        num >>>= 1;
    }
    return charBits;
    }//整数打印,4位一逗号
    static void outputWholeBits(char[] charBits){
    for(int i = 0; i < charBits.length; i++){
        System.out.print(charBits[i]);
        if((i % 4 == 3)&&(i != charBits.length-1)) {
         System.out.print(",");
        }
    }
    System.out.println();
      }//float打印(符号位1, 指数位8, 尾数位23)
    static void outputFloatBits(char[] charBits){
    for(int i = 0; i < charBits.length; i++){
        System.out.print(charBits[i]);
        if((i == 0)||(i == 8)) {
         System.out.print(" ");
        }
    }
    System.out.println();
      }//double打印(符号位1, 指数位11, 尾数位52)
    static void outputDoubleBits(char[] charBits){
    for(int i = 0; i < charBits.length; i++){
        System.out.print(charBits[i]);
        if((i == 0)||(i == 11)) {
         System.out.print(" ");
        }
    }
    System.out.println();
      }
      

  6.   

            try {
                FileInputStream file = new FileInputStream("d:/a.txt");
                int b = file.read();
                while(b!=-1) {
                    System.out.print(Integer.toBinaryString(b)+" ");
                    b = file.read();
                }
            } catch (Exception e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
      

  7.   

    上面的程序对每个字节没有补全8位,修正一下
            try {
                FileInputStream file = new FileInputStream("d:/a.txt");
                int b = file.read();
                String s = null;
                while(b!=-1) {
                    s = String.format("%1$8s", Integer.toBinaryString(b)).replaceAll(" ", "0");
                    System.out.printf(s+" ");
                    b = file.read();
                }
            } catch (Exception e) {
                e.printStackTrace();
            }