vb.net 教程 4-9 二进制文件读写 2
来源:互联网 发布:辐射4优化补丁 编辑:程序博客网 时间:2024/05/29 09:41
继续上一节讲解二进制文件的读写。
本节以实例的方式讲解二进制文件的读取。
请不要忘了加上 Imports System.IO
窗体设计如下:
按下“判断是否可执行文件”按钮时:
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click Dim filename As String If OpenFileDialog1.ShowDialog <> DialogResult.OK Then Exit Sub End If filename = OpenFileDialog1.FileName MessageBox.Show("这" & IIf(checkMZ(filename), "是", "不是") & "可执行文件") End Sub
具体判断是否是可执行文件的代码:
Private Function checkMZ(ByVal filename As String) As Boolean Try Dim fs As FileStream = New FileStream(filename, FileMode.Open) Dim br As BinaryReader = New BinaryReader(fs) Dim intMZSign As Int16 = br.ReadInt16 '检查可执行文件标志 br.Close() fs.Close() '检查是否是可执行文件标志 If Convert.ToString(intMZSign, 16).ToUpper = "5A4D" Then Return True Else Return False End If Catch ex As Exception Return False End Try End Function
说明
1、通常,可执行文件的标记第一个字节是:4D,对应ASCII表中的M,第二个字节是:5A,对应ASCII表中的Z。
MZ亦即可执行文件的Dos文件头,这是Windows下面的可执行文件为了兼容MS-Dos系统做的保留。
补充说明一下:如果是PE文件还需要判断PE头。请自行在网上搜索PE文件结构。
2、按照上面的说明,应该判断是否是 "4D5A“,但是实际代码中判断的是 ”5A4D“,这是因为存储的时高位在后的原因。
ReadInt16时,读取2个字节,读出来的数据为:23117,转换成16进制数就是 5A4D。
再例如:
按照一个字节一个字节的读取,读取了4个字节,按顺序依次是: 0A 0B 0C 00,那么对应的Int32值应该是:C0B0A(十六进制)、789258(十进制)。
相关知识请自行网上搜索相关知识。
由于.net平台下C#和vb.NET很相似,本文也可以为C#爱好者提供参考。
学习更多vb.net知识,请参看vb.net 教程 目录
阅读全文
0 0
- vb.net 教程 4-9 二进制文件读写 2
- vb.net 教程 4-9 二进制文件读写 1
- vb.net 教程 4-9 二进制文件读写 3
- vb.net 教程 4-9 二进制文件读写 游戏存档修改器
- 读写二进制文件 VB.NET
- VB.net读写二进制文件
- vb.net 教程 4-8 文本文件读写 2
- VB二进制文件读写
- VB二进制文件读写
- vb.net 教程 4-8 文本文件读写 4
- vb.net 教程 4-8 文本文件读写 1
- vb.net 教程 4-8 文本文件读写 3
- vb.net 教程 4-8 文本文件读写 5
- vb.net 教程 1-9 数组2
- vb.net 教程 2-9 过程
- vb.net 教程 12-4 msHtml 2
- [VB.NET]读写ini
- [VB.NET]读写注册表
- Spring整合
- C++7.16
- 单片机生成随机数的方法总结
- 使用Navicat for Mysql连接装在虚拟机Ubuntu上的mysql服务器-----新建一个用户
- 【bzoj1068】[SCOI2007]压缩
- vb.net 教程 4-9 二进制文件读写 2
- OpenGL+VS2010开发环境搭建(亲测可用)
- codeforces 327B(Hungry Sequence) 素数筛法入门(欧拉筛法) Java
- java分布式简单实现
- struts2中action跳往action
- liunx中虚拟机中的常使用运行命令
- 【PAT】【Advanced Level】1021. Deepest Root (25)
- (全套最新)在虚拟机ubuntu16.04下安装php环境,配置apache2的8080端口访问并在宿主windows7中访问
- 直通BAT--数据结构与算法五(链表类)