Skip to content

Latest commit

 

History

History
50 lines (29 loc) · 1.78 KB

File metadata and controls

50 lines (29 loc) · 1.78 KB

课后作业 (编码)

在这部分作业中,您将编写一些代码以实现各种校验和。

问题:



构建:

cd code && make

1.编写一个简短的名称为 check-xor.c 的 C 程序,使用基于异或(XOR)的校验和来对输入文件进行计算,并将校验和打印输出。 使用 8 位无符号字符存储(一个字节)校验和。 写一些测试文件,看看它是否按预期工作。

./check-xor # 参数为文件名,忽略则校验 ./check 文件


2.编写一个简短的名称为 check-fletcher.c 的 C 程序,该程序计算输入文件的 Fletcher 校验和。 再次测试你的程序,看看它是否有效。

./check-fletcher # 参数为文件名,忽略则校验 ./check 文件


3.现在比较两者的性能:其中一个比另一个快吗? 随着输入文件大小的变化,性能如何变化? 使用 gettimeofday 调用来计时。 哪个校验性能更好? 哪个检查错误的能力更强?

xor 更快, Fletcher 错误检查能力更强



4.阅读有关 16 位 CRC 的信息,然后实现它。 在许多不同的输入上对其进行测试,以确保其正常工作。 与简单的 XOR 和 Fletcher 相比,它的性能怎么样? 它的检查能力呢?



5.现在构建一个工具名称为 create-csum.c 的工具,该工具为文件的每 4 KB 块计算一个一字节校验和,并将结果记录在输出文件中(在命令行上指定)。 构建一个相关的名称为 check-csum.c 的工具,该工具读取文件,计算每个块上的校验和,并将结果与另一个文件中存储的校验和进行比较。 如果有问题,程序应打印该文件已损坏。 通过手动破坏文件来测试程序