编程题 高手进

来源:百度知道 编辑:UC知道 时间:2024/09/28 10:44:01
字符串A是由n个小写英文字母(a – z)构成的,定义为 char A[n]。你能用更少的空间
表示这个字符串吗?请写出从char A[n] 到你的新的储存格式的转换函数。

a-z只有26个字母,所以可以用5个二进制位表示
1个字节为8位,可以用5个字节表示8个字符
新格式为
clase a{
char d[5];
}
比如有8个字符a,b,c,d,e,f,g,h
那么d[0]=(a-97)+32*(b-97)%8;
d[1]=(b-97)/8+(c-97)*4+128*(d-97)%2;
d[2]=(d-97)/2+((e-97)%16)*16;
d[3]=(e-97)/16+(f-97)*2+64*(g-97)%4;
d[4]=(g-97)/4+(h-97)*4;