C++ 减去两个IPv6地址会给出错误的值

C++ 减去两个IPv6地址会给出错误的值,c++,c,network-programming,ipv6,C++,C,Network Programming,Ipv6,我有一个IP地址存储在两个64位数组中。我注意到最低有效位在第一个字节的小尾端 我正在减去两个只能相差64位的IPv6地址。所以基本上,我只需要减去addr\u end[1]-addr\u begin[0]就可以得到结果 然而,结果并不正确 这是我正在尝试的代码: struct m128bit { union { uint8_t val8[16]; uint16_t val16[8]; uint32_t val32[4];

我有一个IP地址存储在两个64位数组中。我注意到最低有效位在第一个字节的小尾端

我正在减去两个只能相差64位的IPv6地址。所以基本上,我只需要减去
addr\u end[1]-addr\u begin[0]
就可以得到结果

然而,结果并不正确

这是我正在尝试的代码:

struct m128bit {
    union {
        uint8_t  val8[16];
        uint16_t val16[8];
        uint32_t val32[4];
        uint64_t val64[2]; 
    } u;
};
//Overflows 64 bit, too big range (little endian representation)
if (local_begin.u.val64[0] != local_end.u.val64[0]) {
    cout<<"Range is too big!"<<endl;
    return 0;
}
else {
    return (local_end.u.val64[1])-(local_begin.u.val64[1]);
}
struct m128位{
联合{
uint8_t val8[16];
uint16_t val16[8];
uint32_t val32[4];
uint64_t val64[2];
}u;
};
//溢出64位,范围太大(小endian表示)
if(local_begin.u.val64[0]!=local_end.u.val64[0]){
库特
结果应该是5

不是。那些IPv6地址中的数字都是十六进制的

0x7340-0x7335是0xb

以10为基数

29504-29493是11

结果应该是5

不是。那些IPv6地址中的数字都是十六进制的

0x7340-0x7335是0xb

以10为基数

29504-29493是11

结果应该是5

不是。那些IPv6地址中的数字都是十六进制的

0x7340-0x7335是0xb

以10为基数

29504-29493是11

结果应该是5

不是。那些IPv6地址中的数字都是十六进制的

0x7340-0x7335是0xb

以10为基数


29504-29493是11。

在十六进制中,
7335
7340
之间的元素数如下所示

7335
,7336733773387339733A,733b,733c,733d,733e,733f,
7340


因此,当你从
7340
中减去
7335
时,你将得到以10为基数的
11
,即
0xb
hex
中,这就是你得到的
0xb
和期望得到的。

7335
7340
之间的元素数如下

7335
,7336733773387339733A,733b,733c,733d,733e,733f,
7340


因此,当你从
7340
中减去
7335
时,你将得到以10为基数的
11
,即
0xb
hex
中,这就是你得到的
0xb
和期望得到的。

7335
7340
之间的元素数如下

7335
,7336733773387339733A,733b,733c,733d,733e,733f,
7340


因此,当你从
7340
中减去
7335
时,你将得到以10为基数的
11
,即
0xb
hex
中,这就是你得到的
0xb
和期望得到的。

7335
7340
之间的元素数如下

7335
,7336733773387339733A,733b,733c,733d,733e,733f,
7340


因此,当你从
7340
中减去
7335
时,你将得到
11
以10为基数,即
0xb
hex
为基数,这就是你得到的
0xb
和期望得到的值。

为什么不打印出你想要减去的值?至少它会帮助你看到你正在处理的值。为什么不呢打印出你要减去的值?至少它可以帮助你看到你要减去的值。为什么不打印出你要减去的值?至少它可以帮助你看到你要减去的值。为什么不打印出你要减去的值?至少它可以帮助你看到你要减去的值你在和我打交道。