本练习的故事以比较文件扩展名和二进制文件格式为前提,探索二进制数据、模式匹配和字符串编码等概念。学生需要编写一些函数,把预期的媒体类型与文件编码所对应的媒体类型进行比较。
通过这个故事,可以定义以下几类函数:
| 文件类型 | 常见扩展名 | 媒体类型 | 前几个字节中的二进制“签名” |
|---|---|---|---|
| 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 |