gpt4 book ai didi

c - 如何在 C 语言的小端机器上比较两个 ipv6 地址

转载 作者:太空宇宙 更新时间:2023-11-04 02:41:59 33 4
gpt4 key购买 nike

我正在尝试比较两个 ipv6 地址,但想创建可移植的代码。我知道 ipv6 地址以网络字节顺序(大端)存储,因此在大端 CPU 上我可以简单地在两个 in6_addr 结构中使用 memcmp。但是,在小端机器上执行相同操作的最简单方法是什么?

[编辑] 当我想比较两个地址时,我想弄清楚一个地址是小于、等于还是大于另一个。我认为 memcmp 在扫描内存中的位时会依赖于字节序。

最佳答案

实际上,我认为 memcmp 可能会起作用。据我所知,没有一台具有 128 位数据类型的流行机器。我怀疑 ipv6 地址通常作为字节数组携带。鉴于网络字节顺序是大端字节序,memcmp 将按照您的意愿首先查看并比较高位字节。

你想知道机器的字节顺序是否对可移植性很重要,但在这种情况下,我认为它不重要。当我们处理从网络复制的 16 位或 32 位整数时,字节序很重要,并且我们希望将它们作为整数来处理。但在这里,只有一个字节数组,这个问题不存在。

我通常不会这么说——我通常喜欢先确定自己在做什么——但是,试试看吧!

关于c - 如何在 C 语言的小端机器上比较两个 ipv6 地址,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30927315/

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