后缀名判断文件类型十分不准确, 并且linux上也不需要有文件后缀, 我们如何判断文件类型呢.
比如使用bash 命令 file ,可以看出文件的真实类型并不是png,而是windows icon图标
file logo.png
logo.png: MS Windows icon resource - 7 icons, 16x16, 16 colors, 4 bits/pixel, 16x16, 8 bits/pixel
我们c/c++程序中呢? 我们可以读取文件的头部二进制数据
根据这前几位来判断是什么类型
vi logo.png :%!xxd
00000000: 0000 0100 0700 1010 1000 0100 0400 2801 ..............(.
00000010: 0000 7600 0000 1010 0000 0100 0800 6805 ..v...........h.
00000020: 0000 9e01 0000 0000 0000 0100 2000 2820 ............ .(
0000 0100 然后对照文件类型的魔数,可以判定为 .microsoft.icon
"ico": { | |
"signs": [ | |
"0,00000100" | |