运营商优先?

时间:2012-07-31 07:37:42

标签: java operators

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不同。

2 个答案:

答案 0 :(得分:6)

运算符^表示Java中的Xor但不是幂。 你应该使用Math.exp(double a)

答案 1 :(得分:5)

使用模数可以返回您可能不期望的负数。尝试使用以下模式

    int i0 = i & 0xFF;
    int i1 = (i >> 8) & 0xFF;
    int i2 = (i >> 16) & 0xFF;
    int i3 = (i >> 24) & 0xFF;