本文介绍了如何转换__u32在Linux内核__be32的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一个变量

  __ BE32 X;

我有一个函数

  __ U32富(无效){
      __u32一个;
      返回;
}

我需要存储的foo变量返回X

  X = htonl(富());

是不是正确的?
我有一个困惑什么是返回类型 ntohl() htonl()的。他们是彼此的对立面?

要检查输出,我需要重新编译内核,我不想麻烦我的任何错误的系统。所以我问在这里。


解决方案

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

http://www.bruceblinn.com/linuxinfo/ByteOrder.html

#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);

这篇关于如何转换__u32在Linux内核__be32的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

07-28 06:55
查看更多