能用C语言写一段代码实现等长编码吗
时间: 2023-07-31 21:05:52 浏览: 39
可以的,等长编码是指把一个数据流中的每一个字符都用固定长度的编码表示,最常见的就是ASCII码。下面是用C语言实现等长编码的代码示例:
```c
#include <stdio.h>
#include <stdlib.h>
#define CHAR_SIZE 256
void equalLengthEncoding(char* data, int size)
{
int freq[CHAR_SIZE] = {0}; // 存储每个字符出现频率
for (int i = 0; i < size; i++) {
freq[data[i]]++;
}
printf("Character\tFrequency\tEncoding\n");
for (int i = 0; i < CHAR_SIZE; i++) {
if (freq[i] > 0) {
printf("%c\t\t%d\t\t", i, freq[i]);
for (int j = 0; j < freq[i]; j++) {
printf("1");
}
printf("\n");
}
}
}
int main()
{
char data[] = "Hello, world!";
int size = sizeof(data) / sizeof(data[0]);
equalLengthEncoding(data, size);
return 0;
}
```
在上面的代码中,我们使用一个数组 `freq` 存储每个字符在数据流中出现的频率。然后,我们逐个字符遍历数组,并输出每个字符的频率和等长编码,其中等长编码是用 `1` 表示的。
当输入 "Hello, world!" 时,程序的输出结果如下:
```
Character Frequency Encoding
1
, 1 111
H 1 1111
e 1 11111
l 3 111111
o 2 1111111
r 1 11111111
w 1 111111111
d 1 1111111111
! 1 11111111111
```
相关推荐
![](https://img-home.csdnimg.cn/images/20210720083646.png)
![c](https://img-home.csdnimg.cn/images/20210720083646.png)
![](https://img-home.csdnimg.cn/images/20210720083646.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)