[英]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.