我发现以下功能MSDN http://msdn.microsoft.com/en-us/library/windows/desktop/ms740069%28v=vs.85%29.aspx它转换一个unsigned long
从网络字节到unsigned long
按照主机字节顺序,即按照小尾数法定义为:
u_long WSAAPI ntohl(
_In_ u_long netlong
);
MSDN文档说它可以转换32位数字。但自从我读过 C++ 以来long
and int
不一样,即long
不保证是 32 位或相同大小的整数INT_MAX
.
所以,我想知道是否有一个类似的函数,它采用 32 位值,例如unsigned int
代替unsigned long
?
The 文档 http://msdn.microsoft.com/en-us/library/windows/desktop/ms740069%28v=vs.85%29.aspx具体说ntohl
's netlong
参数是一个32位值:
净长 [in]
TCP/IP 网络字节顺序中的 32 位数字。
我读到 long 和 int 不一样,即 long 不一样
保证为 32 位或与整数 INT_MAX 大小相同。
你说得对——在标准C++ a long
is 不保证 https://stackoverflow.com/questions/4329777/is-long-guaranteed-to-be-at-least-32-bits可以是任何特定的尺寸,但它必须是at least32 位。
然而,由于我们讨论的是字节序转换函数,所以我们在这里讨论的是特定于平台的细节。我们现在需要深入了解什么是long
is 在Windows下。而在Windows下,一个很长的是 32 位的 http://msdn.microsoft.com/en-us/library/windows/desktop/aa383751%28v=vs.85%29.aspx:
LONG
32 位有符号整数。范围为 –2147483648 到 2147483647
十进制。该类型在 WinNT.h 中声明如下:
typedef long LONG;
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)