Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/68.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/facebook/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C 如何在Linux内核中将u32转换为uu32_C_Linux Kernel_Htonl - Fatal编程技术网

C 如何在Linux内核中将u32转换为uu32

C 如何在Linux内核中将u32转换为uu32,c,linux-kernel,htonl,C,Linux Kernel,Htonl,我有一个变量 __be32 x; 我有一个函数 __u32 foo(void){ __u32 a; return a; } 我需要将foo的返回存储在变量x中 x=htonl(foo()); 对吗? 我不清楚ntohl()和htonl()的返回类型是什么。它们是相对的吗 为了检查输出,我需要重新编译内核,我不想给我的系统带来任何错误。所以我在这里提问。您可以使用kernel.h中定义的宏: 以下宏在转换后返回该值。 注意:linux/kernel.h头文件是应该

我有一个变量

__be32 x;
我有一个函数

__u32 foo(void){
      __u32 a;
      return a;
}
我需要将foo的返回存储在变量
x

x=htonl(foo());
对吗? 我不清楚
ntohl()
htonl()
的返回类型是什么。它们是相对的吗


为了检查输出,我需要重新编译内核,我不想给我的系统带来任何错误。所以我在这里提问。

您可以使用kernel.h中定义的宏:

以下宏在转换后返回该值。 注意:linux/kernel.h头文件是应该 包含在使用这些宏的源文件中,但是 不是实际定义宏的头文件

#包括
__u16-le16_-to_-cpu(const-le16);
__u32 le32_至cpu(常数le32);
__u64 le64_至cpu(常数le64);
__le16 cpu_至_le16(常数_uu16);
__le32 cpu_至_le32(常数_uuu32);
__le64 cpu_至_le64(常数u_64);
__u16 be16至cpu(常数be16);
__u32 be32_至_cpu(常数be32);
__u64 be64_至cpu(常数be64);
__be16 cpu到be16(常数为16);
__be32 cpu_至_be32(常数_uuu32);
__be64 cpu_至_be64(常数_u_64);

。。。这里实际使用的宏是
x=cpu_to_be32(foo())@放松谢谢。但是化名很容易使用。@Nick为什么这么固执的人。你为什么要放弃我的编辑。我问的是关于
ntohl()
htonl()
。你提供的链接提到了它们。我得到了答案,别名比实际的宏更好。我正在编辑这些别名,那是什么?我不在。。。没有丢弃任何东西。把它们放回去,我会批准的。。。或者把它们当作不同的答案。@Nick不知道。现在,我可以通过“等待同行评审”看到我的编辑。下一刻,它就消失了。
#include <linux/kernel.h>
__u16   le16_to_cpu(const __le16);
__u32   le32_to_cpu(const __le32);
__u64   le64_to_cpu(const __le64);

__le16  cpu_to_le16(const __u16);
__le32  cpu_to_le32(const __u32);
__le64  cpu_to_le64(const __u64);

__u16   be16_to_cpu(const __be16);
__u32   be32_to_cpu(const __be32);
__u64   be64_to_cpu(const __be64);

__be16  cpu_to_be16(const __u16);
__be32  cpu_to_be32(const __u32);
__be64  cpu_to_be64(const __u64);