c - 使用位域压缩字符串
问题描述
我必须对字符串数组进行编码,以便: 1. 编码输出是一个具有最小可能长度的单个字符串 2. 您应该能够稍后解码该字符串。字符串仅由小写字符组成。我不太擅长使用位域。. 当我将字母分配给 enc_string 时,我是否只需右移 3 位?或者我可以使用我创建的结构?另外我怎样才能确保我真正节省了空间。我不能使用 sizeof 因为它以字节为单位返回?
我该如何做位包装。
#include <stdio.h>
typedef struct{
int val:5;
}input;
char* encode_string(char **str_arr,int len, int *ret_len){
int i = 0;
int j = 0;
int k = 0;
char *enc_string = (char*)malloc(10*len*sizeof(char));
for(i=0;i<len;i++){
for(j=0;j<strlen(str_arr[i]); j++){
enc_string[k] = str_arr[i][j]; // str_arr[i][j]>>3
k++;
}
enc_string[k++] = '*';
}
if(k>0){
enc_string[k]='\0';
*ret_len = k;
}
return enc_string;
}
int main()
{
char* str[] = {"abcd","fghi","jkl"};
char *enc_string;
int enc_len = 0;
enc_string = encode_string(str,3,&enc_len);
printf("Encoded string %s size %d \n",enc_string,enc_len);
return 0;
}
解决方案
推荐阅读
- sql - 使用提示优化 Oracle 查询
- excel - 如何在Excel中两列的唯一值之间制作1,0映射文件?
- python - Python在while循环中替换参数变量字符串
- python - to_datetime:“未转换的数据仍然存在”错误
- react-native - React Native web iframe 在渲染时加载本地 pdf 问题
- sql - 如何在雪花sql中将字符串转换为json?
- python-3.x - 如何上传包含字典的用户定义元信息的文件
- typescript - 定义在获取数据后不再未定义的类型 Typescript
- android - 在 Jetpack Compose 中考虑项目的高度来偏移项目
- javascript - 使用 Json 以编程方式在 Gatsby 中创建页面