王朝网络
分享
 
 
 

文件解析入门学习

王朝学院·作者佚名  2016-05-20  
宽屏版  字体: |||超大  

文件解析入门学习参考和部分表格摘自:http://www.cnblogs.com/kingmoon/archive/2011/04/18/2020097.html

在这方面我是新手,一些入门级别的学习,欢迎大牛给出教程或者学习资料。

万事开头难,先从c#读字节数组开始吧

最简单的文本文件字节读取:

static void Main(string[] args){ File.WriteAllText("D:/Test.txt", "aA"); var bytes = File.ReadAllBytes("D:/Test.txt"); Console.WriteLine(bytes); Console.Read();}

字节这个概念并不是一堆01,也不需要取反码补码之类的。

这段代码打印出的值是97,65

正好对应ASCII码,但并不是这么简单,应该txt还有pe文件头的结构,估计字节码是在上一层的东西

加深理解,加一个UTF-8编码:

File.WriteAllText("D:/Test.txt", "aA", Encoding.UTF8);

打印:239,187,191,97,65

多了一个文件头的信息,指定是什么编码?是BOM?(猜的)。

再试试Unicode:

File.WriteAllText("D:/Test.txt", "aA", Encoding.Unicode);

打印:255,254,97,0,65,0

百度查了点资料,从bmp格式的解析学起

字 段 名

大小(单位:字节)

描 述

bfType

2

位图类别,根据不同的操作

系统而不同,在Windows

中,此字段的值总为‘BM’

bfSize

4

BMP图像文件的大小

bfReserved1

2

总为0

bfReserved2

2

总为0

bfOffBits

4

BMP图像数据的地址

前面2个字节的类型信息不太清楚,先看下4个字节的大小信息能否对应上,我创建了一个1x5像素的图片,图片大小是82字节

可以看见,后面4个字节里有82这个数,那么如果数据量更大,是如何进位的?byte格式的上限是255,先尝试一下大于255的大小

打印结果有点诡异,222和1

var bytes = File.ReadAllBytes("D:/a.bmp");var value = BitConverter.ToInt32(new byte[] { 218, 3, 0, 0 }, 0);Console.WriteLine(value);Console.WriteLine(bytes);Console.Read();

然后研究了下,用BitConverter把值打出来,和windows里显示的容量值吻合了

打印结果:986

具体原理就是进位,好像还有高位在前低位在后的规则,没仔细研究

bmp位图文件头总共占用2+4+2+2+4=14个字节

然后再往下就是位图信息头

字 段 名

大小

(单位:

字节)

描 述

biSize

4

本结构的大小,根据不同的操作系统而不同,在Windows中,此字段的值总为28h字节=40字节

biWidth

4

BMP图像的宽度,单位像素

biHeight

4

总为0

biplanes

2

总为0

biBitCount

2

BMP图像的色深,即一个像素用多少位表示,常见有1、4、8、16、24和32,分别对应单色、16色、256色、16位高彩色、24位真彩色和32位增强型真彩色

biComPRession

4

压缩方式,0表示不压缩,1表示RLE8压缩,2表示RLE4压缩,3表示每个像素值由指定的掩码决定

biSizeImage

4

BMP图像数据大小,必须是4的倍数,图像数据大小不是4的倍数时用0填充补足

biXPelsPerMeter

4

水平分辨率,单位像素/m

biYPelsPerMeter

4

垂直分辨率,单位像素/m

biClrUsed

4

BMP图像使用的颜色,0表示使用全部颜色,对于256色位图来说,此值为100h=256

biClrImportant

4

重要的颜色数,此值为0时所有颜色都重要,对于使用调色板的BMP图像来说,当显卡不能够显示所有颜色时,此值将辅助驱动程序显示颜色

bisize不太好理解,比较一下biwidth试试

也就是说跳过前14+4个字节:

改了一次宽度,验证结果是否正确。不过有一点很奇怪,第18个字节应该是索引的17位,为什么多了一位。

暂时写这么多,晚上还有事。对字节的读取加深了理解

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
>>返回首页<<
推荐阅读
 
 
频道精选
静静地坐在废墟上,四周的荒凉一望无际,忽然觉得,凄凉也很美
© 2005- 王朝网络 版权所有