#define HIGH_8BIT_MASK(N) (0xFF << (N))
#define LOW_8BIT_MASK(N) (~ HIGH_8BIT_MASK(N))
//使用数组的版本
/*
* 7BIT压缩
@param: p_dst[out] 目的缓冲区
p_src[in] 源字符串
src_size[in] 字符串大小
@return: 压缩后的数组大小
*/
int yeah_another_ascii_to_7bit(uint8_t *p_dst, const char *p_src, int src_size)
{
int i = 0;
int pos = 0;
int left = 0; //当前字节还能放多少个元素
uint8_t high_part, low_part;
uint8_t *p_usrc = (uint8_t *)p_src;
left = 8;//初始时候为8位,这是从低位开始算的
for(i = 0; i < src_size ; i++){
if(left == 8){
p_dst[pos] |= p_usrc[i] << (8 - left);
left -= 7;
}else if(left == 7){
p_dst[pos] |= p_usrc[i] << (8 - left);
left = 8;
pos++;
}else{ //需要分割,分为两部分,一部分是 低left位, 另一部分是 高7-left位
high_part = low_part = 0;
low_part = p_usrc[i] & LOW_8BIT_MASK(left);
high_part = (p_usrc[
GSM-7bit压缩和解压算法-C语言实现
最新推荐文章于 2024-09-02 07:25:15 发布
本文提供了一段实用的C语言代码,用于实现GSM-7位编码的压缩和解压缩算法。由于网上相关资源稀缺,作者根据标准自行编写了这个简单易用的实现。

最低0.47元/天 解锁文章
3万+

被折叠的 条评论
为什么被折叠?



