1
String ntohl(int i)
{
    int i1 = i % (256);
    int i2 = (i %(65536))/(256);
    int i3 = (i %(16777216))/(65536);
    int i4 = (i)/(16777216);

    int i5 = i % (2^8);
    int i6 = (i %(2^16))/(2^8);
    int i7 = (i %(2^24))/(2^16);
    int i8 = i/(2^24);

    Log.d(TAG, "i:"+i+"   "+i1+"."+i2+"."+i3+"."+i4);
    Log.d(TAG, "i:"+i+"   "+i5+"."+i6+"."+i7+"."+i8);
    return ""+i1+"."+i2+"."+i3+"."+i4;
}

やあ、

IPv4アドレスを返す上記のメソッドがあります。計算はしましたが、i5 i6 i7 i8 は i1 i2 i3 i4 とは異なります。

4

2 に答える 2

6

演算子 ^ は、Java では Xor を意味しますが、power ではありません。Math.exp(double a) を使用する必要があります

于 2012-07-31T07:39:14.687 に答える
5

モジュラスを使用すると、予期しない負の数が返される場合があります。次のパターンを使用してみてください

    int i0 = i & 0xFF;
    int i1 = (i >> 8) & 0xFF;
    int i2 = (i >> 16) & 0xFF;
    int i3 = (i >> 24) & 0xFF;
于 2012-07-31T07:41:28.803 に答える