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,但不是幂。你应该使用 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 回答