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

发布于 2024-10-23 18:43:03 字数 49 浏览 3 评论 0原文

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

I need to print a variable of type byte in an unsigned format. How do I do that?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

故事和酒 2024-10-30 18:43:03

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

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 的补码格式。你也需要那个吗?
EDIT2:检查:

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);
    }
}

I have just written that method for you.

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();
}

EDIT: But it does not cover 2's complement's format. Do you need that as well?
EDIT2: Check out:

Integer.toBinaryString(2)

it covers 2es compliment for negative values, but the output is too long, it pribts 4 bit. Just shorten this with substring and you are done.

Edit 3: My final solution.

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);
    }
}
王权女流氓 2024-10-30 18:43:03

你是说你从一个有符号的 int 开始并想要绝对值?你可以这样做:

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

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

Are you saying you are starting with a signed int and want the absolute value? You could do something like this:

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

    System.out.println(Math.abs(i));
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文