1

ばかげた質問で申し訳ありませんが、ネットワーク経由で-1を送信するのに少し問題があります。

1の場合...

00000000 00000000 00000000 00000001

.....-1であってはなりません...。

11111111 11111111 11111111 11111111

.....送信しています(255 255 255 255)が、10進値を取得しています...。

-1010842689

....反対側に。同じ8ビットルールが32ビットか何かに適用されると間違って仮定していますか?

助けてくれてありがとう。

編集:

出力はUTF-8でフォーマットされていたことがわかりました。これにより、値255を最初のバイトにすることができないため、他の何か(エラーコード?)が出力されていました。

4

2 に答える 2

1

-1は、すべて1ビットとして2の補数で表されます。

これをJavaで確認しました。Javaは32ビットの2の補数整数を使用します。

public class Test {
    public static void main(String[] args) {
        System.out.println(Integer.toHexString(-1));
        System.out.println(Integer.toHexString(-1010842689));
    }
}

出力:

ffffffff
c3bfc3bf
于 2012-03-16T15:13:57.423 に答える
0

取得する10進値は、64ビット値の0xFFFFFFFFC3BFC3BFに等しくなります。32ビットのみを送信していて、sizeof(int)バイトを読み取っている場合(sizeof(int)は実際には4ではなく8です)、これに似たものが表示される場合があります。

于 2012-03-16T15:12:42.337 に答える