在Java中获取无符号字节

时间:2013-02-06 23:52:30

标签: java byte

有没有办法在Java中读取字节并且具有与C#相同的“格式”结果?

确实在Java中,字节是有符号的(-128,+ 127),其中在C#中它不是(0,255)。

我将带有java应用程序的文件发送到只需要正字节的服务器,所以只要我有一些负字节就不能正常工作。

具体问题:当我将我的bytes []序列化为json(使用gson)时,我的值从-128到+ 127,而我想要从0到255的值。

希望它足够清楚。

谢谢。

2 个答案:

答案 0 :(得分:9)

如果您想在Java应用中获取[0-255]值,请使用(b & 0xff)之类的结构从int获得肯定的byte

答案 1 :(得分:-1)

Java字节从-128到127签名,如果你想从0到255获取表示我使用这2个函数

public static byte fromIntToByte(String value) throws Exception {
        return fromIntToByte(Integer.parseInt(value));
    }

    public static byte fromIntToByte(int value) throws Exception {
        String stringByte = "";
        if (value < 0 && value > 255) {
            throw new Exception("Must be from 0<=value<=255");
        }
        if (value <= 127) {
            for (int i = 0; i < 8; i++) {
                stringByte = String.valueOf(value % 2) + stringByte;
                value = value / 2;
            }
        } else {
            value = value / 2;
            for (int i = 0; i < 7; i++) {
                stringByte = String.valueOf(value % 2) + stringByte;
                value = value / 2;
            }
            stringByte = "-" + stringByte;
        }
        System.out.println(stringByte);
        byte b = Byte.parseByte(stringByte, 2);
        return b;
    }