将 IP 打包成 uint32

Packing IP into a uint32

是否将 char IP[4] (192.168.2.1) 打包到 uint32 中作为任何 RSI/ISO/standards 主体(即这里的任何人 https://en.wikipedia.org/wiki/List_of_technical_standard_organisations)的一部分详细说明?我知道它是一系列语言和工具的标准,但我想知道它是否是任何国际标准的一部分,如果是,是哪一个?这应该详细说明例如使用的字节顺序。

需要知道,因为我正在编写规范,我不想通过描述技术来重新发明轮子。

通过网络发送的所有 IP 地址(实际上,标准网络堆栈中使用的所有多字节数字)都在“network order" which is big-endian.

如何在程序中表示任何内容的四个字节取决于程序员,尽管他们通常让编译器决定使用本机硬件使用的任何内容。

来自 Why is network-byte-order defined to be big-endian? ...


RFC1700 stated it must be so. (and defined network byte order as big-endian). It has now been superseded by RFC-3232,但这部分保持不变

The convention in the documentation of Internet Protocols is to express numbers in decimal and to picture data in "big-endian" order [COHEN]. That is, fields are described left to right, with the most significant octet on the left and the least significant octet on the right.

他们参考的是

On Holy Wars and a Plea for Peace 
Cohen, D. 
Computer

可以在 IEN-137 or on this IEEE page 找到摘要。

总结:

Which way is chosen does not make too much difference. It is more important to agree upon an order than which order is agreed upon.

它得出结论,大端和小端方案都是可能的。没有 better/worse 方案,只要在 system/protocol.

中保持一致,任何一个都可以代替另一个。

这取决于 IPv4 地址的去向。

对于实际的IP使用,即在网络数据包中,打包总是使用network byte order,即big-endian。

如果您的用法有所不同,那么您当然可以随意定义包装。