3

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

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

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

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

希望它足够清楚。

谢谢你。

4

2 回答 2

10

如果您想在 Java 应用程序中获取 [0-255] 值,请使用(b & 0xff)类似于intbyte.

于 2013-02-06T23:55:50.987 回答
-1

Java字节从-128签名到127,如果你想得到0到25​​5的表示,我使用这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;
    }
于 2014-01-23T15:06:56.377 回答