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

时间:2015-05-26 19:29:26

标签: c sockets int unsigned-integer

尝试将函数htonl()用于向服务器发送init消息的程序,以及整数值,例如5.但是,htonl()需要以下 {{1整数主机长

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

3 个答案:

答案 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。编译器将生成从intuint32_t的隐式转换。 (转换很可能实际上不得不做任何事情。)

如果值5存储在int对象中,那就是同样的事情:

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

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

(顺便说一下,&#34; int&#34;和&#34;整数&#34;之间存在重要区别。有许多整数类型,包括{{1 {},shortunsigned 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()