在Java中获取无符号字节



有没有任何方法可以在Java中读取字节,并获得与C#中相同的"格式"结果?

事实上,在Java中,字节是有符号的(-128,+127),而在C#中不是(0255)。

我用java应用程序将文件发送到一个只期望正字节的服务器,所以一旦我有一些负字节,它就无法工作。

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

希望它足够清楚。

谢谢。

如果您想在Java应用程序中获得[0-255]值,请使用类似(b & 0xff)的构造从byte中获得正int

Java字节是从-128到127签名的,如果你想得到从0到255的表示,我使用这两个函数

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

相关内容

  • 没有找到相关文章

最新更新