将整数转换为无符号长整型

Convert Integer to Unsigned Long

尝试将函数 htonl() 用于向服务器发送初始化消息以及整数值(例如 5)的程序。但是,htonl() 需要以下 uint32_t整数hostlong

如何将 5 转换为无符号整数?

我认为您正在寻找类型转换操作 - 类似于

int foo = 5;
htonl((unsigned int) foo);

htonl(3) - Linux 手册页

uint32_t htonl(uint32_t hostlong);

The htonl() function converts the unsigned integer hostlong from host byte order to network byte order.

所以你需要做的就是转换你的变量

uint32_t x = 5;
htonl(x);

htonl 函数在 <arpa/inet.h> 中声明。假设你有一个合适的 #include header:

#include <arpa/inet.h>`

宣言

uint32_t htonl(uint32_t hostlong);

将是可见的,因此编译器知道预期的参数类型和结果类型。

如果要将值5传给htonl函数,直接传:

uint32_t result = htonl(5);

常量 5 的类型为 int。编译器将生成从 intuint32_t 的隐式转换。 (很可能转换实际上不需要做任何事情。)

如果值 5 存储在 int object 中,则相同:

int n = 5;
uint32_t result = htonl(n);

不需要显式转换(转换)。

(顺便说一句,“int”和"integer"之间有一个重要的区别。整数类型有很多,包括shortunsigned longuint32_t,等等。int 是其中一种类型的名称。unsigned long 整数。)