gpt4 book ai didi

c++ - 减去两个 IPv6 地址得到错误的值

转载 作者:太空宇宙 更新时间:2023-11-04 07:07:00 25 4
gpt4 key购买 nike

<分区>

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

我正在减去两个只能相差 64 位的 IPv6 地址。所以基本上,我只需要减去 addr_end[1]-addr_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]);
}

结果是 0xb 。我正在传递以下 IP: 2001:0db8:85a3:0000:0000:8a2e:0370:7335 - 2001:0db8:85a3:0000:0000:8a2e:0370:7340

结果应该是5

我错过了什么?我尝试申请 htobe64()同时减去地址,但这也不起作用(我得到 0xb ,而不是 0xb00000000000000 )。

提前致谢!

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com