![](/img/trans.png)
[英]C how to convert string of unsigned long long to uint32_t[]?
[英]unsigned long and uint32_t?
我正在研究套接字编程,并且了解了inet_addr
函数。 但是我很困惑如何处理in_addr_t
类型。
inet_addr
函数返回in_addr_t
类型,是uint32_t
,然后做我必须使用uint32_t
类型变量来处理呢?
在书中,示例将其作为unsigned long
类型处理,但我不明白为什么使用这种方式。
unsigned long conv_addr = inet_addr(addr1); // unsigned long == uint32_t?
您不必使用uint32_t
处理从inet_addr
返回的值。 您可以使用任何可以表示可能返回或在计算中使用的任何值的类型。 但是为什么不使用uint32_t
或in_addr_t
类型呢?
您也可以对inet_addr()函数使用long类型,因为大多数体系结构对long类型都使用32位(4字节),但并不总是适用
某些体系结构将64位用于长类型。LP64约定将64位用于长类型
但是uint32_t的大小始终为32位 ,与编译器遵循的约定无关。
如果使用MSVC编写程序,则长类型使用32位。
对于gcc,它取决于计算机硬件和GCC的实现。
当您确信long大小为32位时,可以安全地使用unsigned long分配给inet_addr()的返回类型。
建议对inet_addr ()使用uint32_t (也称为无符号32位内存),因此您根本不需要关心long类型的大小。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.