gpt4 book ai didi

c++ - 将网络字节顺序(大端)转换为小端

转载 作者:可可西里 更新时间:2023-11-01 10:36:53 24 4
gpt4 key购买 nike

我从 MSDN 中找到了以下函数它将 unsigned long 从网络字节转换为主机字节顺序的 unsigned long,即在 little-endian 中定义为:

u_long WSAAPI ntohl(
_In_ u_long netlong
);

MSDN 文档说它可以转换 32 位数字。但是因为在 C++ 中,正如我所读到的那样 longint 是不一样的,即 long 不能保证是 32 位或相同的大小一个整数 INT_MAX

所以,我想知道是否有类似的函数采用 32 位值,例如 unsigned int 而不是 unsigned long

最佳答案

documentation特别指出 ntohlnetlong 参数是一个 32 位值:

netlong [输入]

A 32-bit number in TCP/IP network byte order.


I have read that long and int are not the same i.e. long is not guaranteed to be 32 bits or the same size of an integer INT_MAX.

你是对的——在标准 C++ 中,longnot guaranteed可以是任何特定大小,但它必须至少 32 位。

然而,由于我们讨论的是字节序转换函数,所以我们在这里讨论的是特定于平台的。我们现在需要深入了解什么是 long 在 Windows 下。在 Windows 下,一个很长的 is 32-bits :

A 32-bit signed integer. The range is –2147483648 through 2147483647 decimal. This type is declared in WinNT.h as follows:

typedef long LONG;

关于c++ - 将网络字节顺序(大端)转换为小端,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21143877/

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