如何在Java中以无符号格式打印字节

时间:2011-03-19 17:23:06

标签: java int unsigned-integer

我需要以无符号格式打印byte类型的变量。我该怎么做?

2 个答案:

答案 0 :(得分:3)

我刚刚为你写了这个方法。

public static String printUnsignedByte(byte b){
    StringBuilder sb = new StringBuilder();
    while(b>0){
        sb.insert(0, b%2==0?0:1);
        b>>=1;
    }
    for(int i = 8-sb.length(); i>0; i--){
        sb.insert(0,0);
    }
    return sb.toString();
}

编辑:但它不包括2的补码格式。你也需要那个吗? 编辑2:退房:

Integer.toBinaryString(2)

它涵盖2es补充负值,但输出太长,它pribts 4位。只需用子串缩短它就可以了。

编辑3:我的最终解决方案。

public static String printUnsignedByte(byte b){
    if(b>0){
        StringBuilder ret = new StringBuilder(Integer.toBinaryString(b));
        for(int i = 8-ret.length(); i>0; i--){
            ret.insert(0,0);
        }
        return ret.toString();
    }else{
        return Integer.toBinaryString(b).substring(24);
    }
}

答案 1 :(得分:2)

你是说你开始使用signed int并想要绝对值?你可以这样做:

    byte b = Byte.parseByte("-9");
    int i = (int) b;

    System.out.println(Math.abs(i));