📄 cutil-bit7.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 + -