3

Javaでバイトを読み取り、C#と同じ「フォーマット」結果を得る方法はありますか?

実際、Java では、バイトは (-128、+127) で署名されますが、C# では (0, 255) ではありません。

正のバイトのみを想定しているサーバーに Java アプリケーションを使用してファイルを送信しているため、負のバイトがあるとすぐに機能しません。

具体的な問題: bytes[] を (gson を使用して) json にシリアル化するとき、値が -128 から + 127 であるのに対し、0 から 255 の値が必要です。

それが十分に明確であることを願っています。

ありがとうございました。

4

2 に答える 2

10

Java アプリで [0-255] の値を取得する場合は、 aから(b & 0xff)正の値を取得するような構造を使用します。intbyte

于 2013-02-06T23:55:50.987 に答える
-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;
    }
于 2014-01-23T15:06:56.377 に答える