#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 = l
GSM-7bit压缩和解压算法-C语言实现
最新推荐文章于 2021-05-20 18:39:03 发布