network软件包中HostAddress
和HostAddress6
的文档说:
-- | Network byte order.
type HostAddress = Word32
-- | Host byte order.
type HostAddress6 = (Word32, Word32, Word32, Word32)
这个字节顺序实际上是什么意思?毕竟,
Word32
应该是独立于主机endianness的数字,字节序仅在对其进行反序列化时才重要。我的目标是为IPv4或IPv6地址构造正确的
SockAddr
值。似乎对于
HostAddress
,字节顺序在小尾数体系结构上是翻转的,因为我show $ SockAddrInet 0 0x0100007f
给出了"127.0.0.1:0"
。并且show $ SockAddrInet6 0 0 (0,0,0,1) 0
给出了"[::1]:0
,因此看来字节顺序是正确的。但是目前我没有机会在大端架构上对其进行测试。 最佳答案
Data.IP
模块看起来可以解决此问题。
看一下:
toHostAddress
toHostAddress6
以及创建IPv4和IPv6值的各种方法。