编程实现QQ表情文件CFC格式(1)
背景:最近闲来无事,也应论坛某会员要求,想做个QQ表情下载的站点。本来事情是很简单的,写个小小的CRUD也就可以了,但嘻哈呵嘿既然是个.Net程序员,当然要使用.Net来实现了。今天我们就用.Net来实现CFC ( custom face cab? ) 的表情格式的打包功能。
要做到这个功能,我们必须先了解这个格式,首先Google一下。我们找到了这一篇来自清华大学的文章:FC文件格式详解
从这篇文章里我们得知了CFC的文件格式大概如下:
一个块有15个字段,如下
md5的字符串形式长度,4个字节 快捷键长度,4字节 表情名称长度,4字节 表情文件名长度,4字节 表情文件长度,4字节 微缩图文件名长度,4字节 微缩文件长度,4字节 表情文件帧数,4字节 图片md5的字符串形式 快捷键 表情名称 表情文件名 微缩图文件名 表情文件内容 微缩图内容 知道了格式就好办了,我们按步就班定义一个结构(strUCt) 1 Struct#region Struct 2 public struct FaceBlock 3 { 4 public uint MD5Length; //32 5 public uint uintcutLength; //4 6 public uint FaceNameLength; //4 7 public uint FaceFileNameLength; //36 md5 + extension 8 public uint FileLength; 9 public uint ThumbnailFileNameLength; //41 md5 + fixed.bmp10 public uint ThumbnailFileLength;11 public uint FrameLength;12 public string MD5;13 public string uintcuts;14 public string FaceName;15 public string FaceFileName;16 public string ThumbnailFileName;17 public byte[] FaceData;