C语言如何按位读取字符串,如何在C++中实现按位存取

本文介绍了在C/C++中如何实现按位读写字符串和数据,以实现紧凑存取,节省网络带宽。提供了一系列用于按位读取和写入的函数,包括读写单个位、任意长度数据、字符串等,适用于国防、科研等领域对数据压缩有高要求的场景。
摘要由CSDN通过智能技术生成

在我创业的一个项目中,为了节约网络带宽,因此在网络中传输数据需要实现紧凑存取,在国防,科研,航天,军工等多个领域其实也有类似的需求。

实现紧凑存取,不是按一个字节一个字节地存取,而是按位存取。比如一个字节,我们可以存储8个bool信息,废话少说,直接分享代码(备注:里面的代码算法值得优化)。

//以下为函数定义

/***********************************************************************/

/* 函数作用:从buffer读一个位 */

/* 参数pBuffer[in]:指定buffer */

/* 参数nStart[in]:指定位置 */

/* 参数nEnd[out]:返回结束位置 */

/* 参数retByte[out]:返回读取结果值 */

/* 返回:void */

/***********************************************************************/

void ReadOneBit( byte* pBuffer, int nStart, /* out */int& nEnd, /* out */ byte& retByte );

/***********************************************************************/

/* 函数作用:从指定buffer里读任意一段位置数据 */

/* 参数pBuffer[in]:指定buffer */

/* 参数nStart[in]:指定位置 */

/* 参数btLength[in]:读取长度 */

/* 参数nEnd[out]:返回结束位置 */

/* 参数retData[out]:返回读取结果值,支持任意数据类型 */

/* 返回:void */

/***********************************************************************/

template

void ReadDataFromBuffer( byte* pBuffer, int nStart, byte btLength, /* out */int& nEnd, /* out */ T& retData );

/*****************************************

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值