⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 cutil-bit7.c

📁 Linux环境下常用功能的实现
💻 C
字号:
#include "cutil.h"/** * cutil_bit7_from_bit8 * @bit8: 要转换的英文字符串 * @olen: 转换后的字符串长度 * * 转换的BIT8到BIT7 * * Returns: 新分配的空间 */char * cutil_bit7_from_bit8(char *bit8, int *olen){	int i,j;	char bitmap,next_bit,bit;	int len = strlen(bit8);	char *bit7 = (char *)calloc(len/8 * 7 + 2, sizeof(char));		memset(bit7, 0, len/8 * 7 + 2);	bitmap = 0x01;	bit = 0;	for( i = 0,j=0  ; i < len ; i ++,j++)	{		next_bit = bit8[i+1] & bitmap;		bit7[j] = ( bit8[i] >> bit) | (next_bit << ( 7 - bit)); 		bit ++;		if(bit == 7)		{			bit = 0;			bitmap = 0x01;			i ++;		}		else		{			bitmap = (bitmap << 1) | 0x01;		}	}	if(olen)		*olen = j;	return bit7;}/** * cutil_bit7_to_bit8 * @bit7: 要转换的英文字符串 * @olen: 转换后的字符串长度 * * 转换的BIT7到BIT8 * * Returns: 新分配的空间 */char * cutil_bit7_to_bit8(char *bit7, int *olen){	int i ,j ;	unsigned char bitmap,back_bit,old_bit,bit;	int len = strlen(bit7);	char *bit8 = (char *)calloc(len / 7 * 8 + 2, sizeof(char));	memset(bit8, 0, len / 7 * 8 + 2);	bitmap = 0x80;	bit = 0 ;	old_bit = 0;	for( i = 0 ,j = 0 ; i < len ; i ++,j++)	{		back_bit = bit7[i] & bitmap;		bit8[j] =  old_bit| ((bit7[i] & (~bitmap)) << bit);		old_bit = back_bit >> (7 - bit);		bit ++;		if(bit == 7)		{			j ++;			bit8[j] = old_bit;			old_bit = 0;			bitmap = 0x80;			bit = 0;		}		else		{			bitmap = (bitmap >> 1 ) | 0x80;		}	}	if(olen)		*olen = j;	return bit8;}/** * cutil_bit7_hex_str_from_bit8 * @bit8: 要转换的英文字符串 * @olen: 转换后的字符串长度 * * 转换的BIT8到十六进制打印BIT7 * * Returns: 新分配的空间 */char * cutil_bit7_hex_str_from_bit8(char *bit8, int * olen){	char *s;	int len;	char *p;	s = cutil_bit7_from_bit8(bit8, &len);	p = cutil_string_to_hex(s, len, olen);	free(s);	return p;}/** * cutil_bit7_hex_str_to_bit8 * @bit7_hex: 要转换的英文字符串 * @olen: 转换后的字符串长度 * * 转换的BIT8从十六进制打印BIT7 * * Returns: 新分配的空间 */char * cutil_bit7_hex_str_to_bit8(char *bit7_hex, int * olen){	char *s;	char *p;	s = cutil_string_from_hex(bit7_hex, NULL);	p = cutil_bit7_to_bit8(s, olen);	free(s);	return p;}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -