文件嗅探器


故事

本练习的故事以比较文件扩展名和二进制文件格式为前提,探索二进制数据、模式匹配和字符串编码等概念。学生需要编写一些函数,把预期的媒体类型与文件编码所对应的媒体类型进行比较。

任务

通过这个故事,可以定义以下几类函数:

  • 从字符串扩展名返回媒体类型。
  • 从二进制文件格式返回媒体类型。
  • 比较字符串扩展名所对应的预期媒体类型与二进制文件的实际类型。

练习参考

文件类型 常见扩展名 媒体类型 前几个字节中的二进制“签名”
ELF none 或 "exe" "application/octet-stream" 0x7F, 0x45, 0x4C, 0x46
BMP "bmp" "image/bmp" 0x42, 0x4D
PNG "png" "image/png" 0x89, 0x50, 0x4E, 0x47, 0x0D, 0x0A, 0x1A, 0x0A
JPG "jpg" "image/jpg" 0xFF, 0xD8, 0xFF
GIF "gif" "image/gif" 0x47, 0x49, 0x46

实现