用VBS讀寫二進(jìn)制文件的另一種方法分享
之前寫的那篇給出的方法雖然不錯(cuò),但是當(dāng)文件過大時(shí)(其實(shí)很小,也就幾M),對(duì)應(yīng)的數(shù)組也會(huì)很大,然后會(huì)出現(xiàn)運(yùn)行時(shí)錯(cuò)誤,提示內(nèi)存耗盡,為此我郁悶了好久。
雖然我沒有把那個(gè)程序解密出來(如果哪位真正的高手會(huì),麻煩指點(diǎn)一下),但是從中領(lǐng)悟出了用VBS讀寫二進(jìn)制文件的另一種方法,即Microsoft.XMLDOM+ADODB.Stream。這個(gè)方法的效率比原來那個(gè)高得多,而且似乎沒有文件大小限制。
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
函數(shù)的參數(shù)是要讀取的文件路徑,返回值是包含二進(jìn)制文件的十六進(jìn)制值的字符串。
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
第一個(gè)參數(shù)是要讀入的文件路徑,第二個(gè)參數(shù)是包含二進(jìn)制文件的十六進(jìn)制值的字符串。至于如何獲得二進(jìn)制文件的十六進(jìn)制值,那方法就很多了,最簡單的方法當(dāng)然就是用fso對(duì)象將ReadBinary函數(shù)的返回值寫到文本文件中去,然后Ctrl+C,Ctrl+V。其實(shí)用十六進(jìn)制工具也很簡單。
其他的就不多說了,看不懂的多看看MSDN參考文檔。寫了一個(gè)示例程序,里面包含了天空之城音樂的所有數(shù)據(jù),雙擊后在同一文件夾生成天空之城的MP3文件并播放。
原文:http://demon.tw/programming/vbs-binary-file-another.html
相關(guān)文章
VBS基礎(chǔ)篇 - wscript 對(duì)象詳解
WScript 對(duì)象是 Windows 腳本宿主對(duì)象模型層次結(jié)構(gòu)的根對(duì)象。它可在任何腳本文件中使用,不需要特定的聲明2018-05-05vbs提示沒有在該機(jī)執(zhí)行windows腳本宿主的權(quán)限。請(qǐng)與系統(tǒng)管理員聯(lián)系
這篇文章主要介紹了關(guān)于運(yùn)行VBS文件提示沒有在該機(jī)執(zhí)行windows腳本宿主的權(quán)限。請(qǐng)與系統(tǒng)管理員聯(lián)系。錯(cuò)誤的解決方法,需要的朋友可以參考下2020-08-08vbs實(shí)現(xiàn)的定時(shí)關(guān)機(jī)、重啟的腳本和程序
用vbs實(shí)現(xiàn)的定時(shí)關(guān)機(jī)重啟的腳本,沒想到haiwa2005年就寫了這個(gè)東西,原理就是調(diào)用了shutdown和vbs的延時(shí)功能2008-06-06VBS 十六進(jìn)制異或加密實(shí)現(xiàn)代碼
文件不要過大,最好不要超過 100 KB,密鑰不要用數(shù)字,不想改了。理論上支持任何二進(jìn)制文件格式2013-07-07使用vbs腳本添加程序到自啟動(dòng)項(xiàng)的代碼
bs腳本的功能呢是很多的,不過有時(shí)候我們只需要其中的某些功能,今天我突然想研究下怎么用vbs腳本實(shí)現(xiàn)添加程序到自啟動(dòng)項(xiàng)2013-01-01