我试图比较两个ipv6地址,但是想要创建可移植的代码。我知道ipv6地址存储在网络字节顺序(大端)中,因此在大端CPU上我可以简单地在两个in6_addr结构中使用memcmp。但是在小端机器上做同样事情的最简单方法是什么?
[编辑]当我想比较两个地址时,我想弄清楚地址是小于,等于还是大于另一个。我认为memcmp将依赖于它扫描内存中的位的顺序。
答案 0 :(得分:2)
实际上,我认为memcmp可能会起作用。我所知道的不是具有128位数据类型的流行机器。我怀疑ipv6地址通常作为字节数组携带。鉴于网络字节顺序是big-endian,memcmp将首先看到并比较高位字节,如你所愿。
你想知道机器的字节顺序是否对可移植性很重要,你是对的,但在这种情况下,我认为它并不重要。当我们使用已经从网络复制的16位或32位整数时,字节序很重要,我们希望将它们作为整数使用。但是在这里,只有一个字节数组,这个问题就不存在了。
我通常不这么说 - 我通常喜欢理解我先做的事情 - 但是,试试吧!