尝试将函数htonl()
用于向服务器发送init消息的程序,以及整数值,例如5.但是,htonl()
需要以下 {{1整数主机长
如何将5转换为无符号整数?
答案 0 :(得分:4)
htonl
函数在<arpa/inet.h>
中声明。假设您对该标头有适当的#include
:
#include <arpa/inet.h>`
声明
uint32_t htonl(uint32_t hostlong);
将是可见的,因此编译器知道期望的参数类型和结果类型。
如果您想将值5
传递给htonl
函数,只需传递它:
uint32_t result = htonl(5);
常量5
的类型为int
。编译器将生成从int
到uint32_t
的隐式转换。 (转换很可能实际上不得不做任何事情。)
如果值5
存储在int
对象中,那就是同样的事情:
int n = 5;
uint32_t result = htonl(n);
不需要显式转换(强制转换)。
(顺便说一下,&#34; int
&#34;和&#34;整数&#34;之间存在重要区别。有许多整数类型,包括{{1 {},short
,unsigned long
等等。uint32_t
是其中一种类型的名称。int
值是整数。)
答案 1 :(得分:0)
我认为您正在寻找类型转换操作 - 这与
有关int foo = 5;
htonl((unsigned int) foo);
答案 2 :(得分:0)
# On branch master
# Your branch is ahead of 'origin/master' by 1 commit.
#
# Changes not staged for commit:
# (use "git add/rm <file>..." to update what will be committed)
- Linux手册页
htonl(3)
uint32_t htonl(uint32_t hostlong);
函数将无符号整数hostlong从主机字节顺序转换为网络字节顺序。
所以你需要做的就是投射你的变量
htonl()