1

Java で 2 バイトのモジュロ加算を実行しようとしていますが、結果として 3 番目のバイトが取得されます。

私が使用しているコードは次のとおりです。

public static byte modAdd(byte byte1,byte byte2){
    int int1 = ((int)byte1)+128;
    int int2 = ((int)byte2)+128;
    int outNum = int1+int2;
    if(outNum>255){
        outNum-=255;
    }
    outNum-=128;
    return (byte)outNum;
}

ただし、これには問題があります。byte1 が 0x7F で、byte2 が 0x00 以外の場合、モジュロ減算コードは 0x7F を返さず、代わりに 0x80 を返します。

ケースを特定できますが、それを修正する方法がわかりません。

4

1 に答える 1

3

その関数を byte1 + byte2 に置き換えるだけです。整数のサイズに関係なく、整数の加算では、設計上、「モジュラー」オーバーフローが発生します。そのすべてのキャストは必要ありません。

見つかったエラーの原因は次の行にあります。

    outNum-=255;

それは256になるはずです

于 2013-04-04T03:44:44.050 に答える