将整数转换为无符号长整型
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
。编译器将生成从 int
到 uint32_t
的隐式转换。 (很可能转换实际上不需要做任何事情。)
如果值 5
存储在 int
object 中,则相同:
int n = 5;
uint32_t result = htonl(n);
不需要显式转换(转换)。
(顺便说一句,“int
”和"integer"之间有一个重要的区别。整数类型有很多,包括short
、unsigned long
、uint32_t
,等等。int
是其中一种类型的名称。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
。编译器将生成从 int
到 uint32_t
的隐式转换。 (很可能转换实际上不需要做任何事情。)
如果值 5
存储在 int
object 中,则相同:
int n = 5;
uint32_t result = htonl(n);
不需要显式转换(转换)。
(顺便说一句,“int
”和"integer"之间有一个重要的区别。整数类型有很多,包括short
、unsigned long
、uint32_t
,等等。int
是其中一种类型的名称。unsigned long
值 是 整数。)