时间:2021-05-22
之前写的那篇给出的方法虽然不错,但是当文件过大时(其实很小,也就几M),对应的数组也会很大,然后会出现运行时错误,提示内存耗尽,为此我郁闷了好久。
最近在博客的流量记录中发现百度关键字“一些很恶作剧的vbs程序”(看来现在的年轻人很喜欢玩这口),于是打开久违的百度搜索了一下,发现出现在第三。出现在第二的是百度HI,上面也是一个恶作剧程序,而且还是加密的。我尝试着解密,却发现这个加密似乎比前几天解密的那个病毒更变态,未果。
虽然我没有把那个程序解密出来(如果哪位真正的高手会,麻烦指点一下),但是从中领悟出了用VBS读写二进制文件的另一种方法,即Microsoft.XMLDOM+ADODB.Stream。这个方法的效率比原来那个高得多,而且似乎没有文件大小限制。
复制代码 代码如下:
Function ReadBinary(FileName)
Const adTypeBinary = 1
Dim stream, xmldom, node
Set xmldom = CreateObject("Microsoft.XMLDOM")
Set node = xmldom.CreateElement("binary")
node.DataType = "bin.hex"
Set stream = CreateObject("ADODB.Stream")
stream.Type = adTypeBinary
stream.Open
stream.LoadFromFile FileName
node.NodeTypedValue = stream.Read
stream.Close
Set stream = Nothing
ReadBinary = node.Text
Set node = Nothing
Set xmldom = Nothing
End Function
函数的参数是要读取的文件路径,返回值是包含二进制文件的十六进制值的字符串。
复制代码 代码如下:
Sub WriteBinary(FileName, Buf)
Const adTypeBinary = 1
Const adSaveCreateOverWrite = 2
Dim stream, xmldom, node
Set xmldom = CreateObject("Microsoft.XMLDOM")
Set node = xmldom.CreateElement("binary")
node.DataType = "bin.hex"
node.Text = Buf
Set stream = CreateObject("ADODB.Stream")
stream.Type = adTypeBinary
stream.Open
stream.write node.NodeTypedValue
stream.saveToFile FileName, adSaveCreateOverWrite
stream.Close
Set stream = Nothing
Set node = Nothing
Set xmldom = Nothing
End Sub
第一个参数是要读入的文件路径,第二个参数是包含二进制文件的十六进制值的字符串。至于如何获得二进制文件的十六进制值,那方法就很多了,最简单的方法当然就是用fso对象将ReadBinary函数的返回值写到文本文件中去,然后Ctrl+C,Ctrl+V。其实用十六进制工具也很简单。
其他的就不多说了,看不懂的多看看MSDN参考文档。写了一个示例程序,里面包含了天空之城音乐的所有数据,双击后在同一文件夹生成天空之城的MP3文件并播放。
原文:http://demon.tw/programming/vbs-binary-file-another.html
声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。
本文要介绍的C#本地读写二进制文件,二进制文件指保存在物理磁盘的一个文件。第一步:读写文件转成流对象。其实就是读写文件流(FileStream对象,在Syste
Base64是一种用64个字符来表示任意二进制数据的方法。用记事本打开exe、jpg、pdf这些文件时,我们都会看到一大堆乱码,因为二进制文件包含很多无法显示和
本文实例讲述了jscript读写二进制文件的方法。分享给大家供大家参考。具体实现方法如下:varbin=newArray(256);for(vari=0;i
编译就是把高级语言的源文件进行一系列处理,最终得到二进制代码的可执行文件(传说中的binary)。 编译器是将“一种语言(通常为高级语言)”翻译为“另一种语言
数据的表示形式是二进制,是计算机的表示方法,可以说是机器语言。就是用0和1表示信息。二进制是计算技术中广泛采用的一种数制。二进制数据是用0和1两个数来表示的数。