C++->大小端转换

在网络编程中,大小端转换是经常的事。而Linux也有封装好的大小端转换的处理。


可能通过以下步骤来找到linux下的大小端转换是怎么操作的。

在终端下运行以下命令找到linux系统中的endian.h的位置。

locate endian.h

以下是我的电脑找出的结果。


用vim(或者其他编辑器)打开第一个endian.h,可以看到endian.h文件很简单。里面包含了一个<bits/byteswap.h>的头文件。而下是一些宏定义。如果你做过linux下的网络编程,可能会觉得这些宏有点眼熟。


再用locate找到byteswap.h的位置。


在我的计算机中是下面那条记录。再打开这个文件。

可以发现,这个文件也很简单,他的处理都是使用宏来进行转换。宏有什么缺点,大家都知道了。C++的思想是推荐大家使用inline函数来替换宏。这里我对这些宏封装成了函数。以下是主要的代码。

16位的转换:

template <typename T16>
T16 Endian::swap16(const T16 &v)
{
	assert(sizeof(T16) == 2);

	return 
  • 0
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值