如何使用VBScript从二进制文件读取

极客

我是VBScript的新手,如果我错了,请随时纠正我。

从二进制文件读取时遇到问题。

我需要从二进制文件中读取最后四个字节,并将其与本地变量进行比较。

但是问题是我0x3F在将ASCII字符(最后4个字节)转换为等效的十六进制时得到了的价值。但是,通过打开该脚本创建的文件,我可以看到有效的数据,在该文件中,相同的二进制流用于写入文件。

我不确定是否遗漏了一些东西

下面是代码供参考

Const adTypeBinary = 1 
Const adSaveCreateOverWrite = 2 
Const CRC = 4
Dim BinaryStream, OutStream, StartPos, Bytes
'debug
Dim fso, MyFile
Const ForReading = 1, ForWriting = 2, ForAppending = 8
Const TristateUseDefault = -2, TristateTrue = -1, TristateFalse = 0
'debug
Dim bootstrapIOPCRC, bootIOPCRC, appIOPCRC, bootDSPCRC, codeDSPCRC, dataDSPCRC
Dim a(1)
bootstrapIOP = "C:\Bins\1.bin"
bootIOP = "C:\Bins\2.bin"
appIOP = "C:\Bins\3.bin"
bootDSP = "C:\Bins\4.bin"
codeDSP = "C:\Bins\5.bin"
dataDSP = "C:\Bins\6.bin"
'Create the BinaryStream object 
Set BinaryStream = CreateObject("ADODB.Stream") 
'Set it up and load in the source file 
BinaryStream.Type = adTypeBinary 
BinaryStream.Open 
' *** For bootstrapIOP
Bytes = 0
StartPos = 0
BinaryStream.LoadFromFile bootstrapIOP
'Create OutStream 
Set OutStream = CreateObject("ADODB.Stream") 
OutStream.Type = adTypeBinary 
OutStream.Open 
SET objFSO = CREATEOBJECT("Scripting.FileSystemObject")
SET objFile = objFSO.GetFile(bootstrapIOP)
Bytes = CLng(objFile.Size)
StartPos = Bytes-CRC
'selecting the required data
BinaryStream.Position = StartPos 
BinaryStream.CopyTo OutStream, CRC
OutStream.SaveToFile "C:\bootstrapIOP.txt", adSaveCreateOverWrite 
bootstrapIOPCRC = 0
bootstrapIOPCRC = OutStream.Read ( CRC)
strHex =""
MsgBox((Asc(Mid(bootstrapIOPCRC,1,1))))
MsgBox(Mid(bootstrapIOPCRC,2,1))
MsgBox(bootstrapIOPCRC)
For i=1 To Len(bootstrapIOPCRC)
    strHex = strHex + Hex(Asc(Mid(bootstrapIOPCRC,i,1)))
Next
If (strHex = "") Then 
    MsgBox "Yippy"
Else 
    MsgBox(strHex)
End If
MsgBox(Len(bootstrapIOPCRC))
Set objFSO1=CreateObject("Scripting.FileSystemObject")
' How to write file
outFile="c:\test.txt"
Set objFile = objFSO1.CreateTextFile(outFile,True)
objFile.Write a(0)
objFile.Write a(1)
objFile.Close
' *** For bootIOP
Bytes = 0
StartPos = 0
BinaryStream.LoadFromFile bootIOP
SET objFile = objFSO.GetFile(bootIOP)
Bytes = CLng(objFile.Size)
StartPos = Bytes-CRC
'selecting the required data
BinaryStream.Position = StartPos 
BinaryStream.CopyTo OutStream, CRC
OutStream.SaveToFile "C:\bootIOP.txt", adSaveCreateOverWrite 
bootIOPCRC = 0
bootIOPCRC = OutStream.Read ( CRC)
' *** For appIOP
Bytes = 0
StartPos = 0
BinaryStream.LoadFromFile appIOP
SET objFile = objFSO.GetFile(appIOP)
Bytes = CLng(objFile.Size)
StartPos = Bytes-CRC
'selecting the required data
BinaryStream.Position = StartPos 
BinaryStream.CopyTo OutStream, CRC
OutStream.SaveToFile "C:\appIOP.txt", adSaveCreateOverWrite 
appIOPCRC = 0
appIOPCRC = OutStream.Read ( CRC)
' *** For bootDSP
Bytes = 0
StartPos = 0
BinaryStream.LoadFromFile bootDSP
SET objFile = objFSO.GetFile(bootDSP)
Bytes = CLng(objFile.Size)
StartPos = Bytes-CRC
'selecting the required data
BinaryStream.Position = StartPos 
BinaryStream.CopyTo OutStream, CRC
OutStream.SaveToFile "C:\bootDSP.txt", adSaveCreateOverWrite 
bootDSPCRC = 0
bootDSPCRC = OutStream.Read ( CRC)
' *** For codeDSP
Bytes = 0
StartPos = 0
BinaryStream.LoadFromFile codeDSP
SET objFile = objFSO.GetFile(codeDSP)
Bytes = CLng(objFile.Size)
StartPos = Bytes-CRC
'selecting the required data
BinaryStream.Position = StartPos 
BinaryStream.CopyTo OutStream, CRC
OutStream.SaveToFile "C:\codeDSP.txt", adSaveCreateOverWrite 
codeDSPCRC = 0
codeDSPCRC = OutStream.Read ( CRC)
' *** For dataDSP
Bytes = 0
StartPos = 0
BinaryStream.LoadFromFile dataDSP
SET objFile = objFSO.GetFile(dataDSP)
Bytes = CLng(objFile.Size)
StartPos = Bytes-CRC
'selecting the required data
BinaryStream.Position = StartPos 
BinaryStream.CopyTo OutStream, CRC
OutStream.SaveToFile "C:\dataDSP.txt", adSaveCreateOverWrite 
dataDSPCRC = 0
dataDSPCRC = OutStream.Read ( CRC)
用户名

当使用二进制数据而不是字符串数据时,您需要使用正确的Function变体。

  • LenB() -返回二进制数据的长度(以字节为单位)。
  • MidB() -从二进制数据返回指定数量的字节。
  • AscB() -返回一个字节的字符代码。
'Using the following pseudo code should help
hexstring = Hex(AscB(MidB(binarydata, start, numofbytes)))

有用的链接

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何使用VBScript从二进制文件读取

来自分类Dev

如何使用 WINAPI 读取整个二进制文件?

来自分类Dev

Asp.net Webforms-如何使用二进制读取器读取文件

来自分类Dev

如何从二进制文件读取多个结构

来自分类Dev

如何优化C ++二进制文件读取?

来自分类Dev

如何在Julia中读取二进制文件?

来自分类Dev

如何从dicom文件读取二进制数据?

来自分类Dev

如何从二进制文件读取多个结构

来自分类Dev

读取时如何移入二进制文件?

来自分类Dev

如何逐字节读取二进制文件?

来自分类Dev

使用c以二进制模式读取文件

来自分类Dev

二进制文件无法使用Java正确读取

来自分类Dev

使用StringStream在C ++中读取二进制文件

来自分类Dev

使用ARM程序集读取二进制文件

来自分类Dev

使用Python 3.5从二进制文件读取

来自分类Dev

使用ifstream读取二进制文件

来自分类Dev

二进制文件如何“二进制”?

来自分类Dev

如何在C ++中使用混合文本和二进制文件读取大文件

来自分类Dev

大块读取二进制文件

来自分类Dev

从二进制文件读取

来自分类Dev

从二进制文件读取char *

来自分类Dev

从MongoDB读取二进制文件

来自分类Dev

从二进制文件读取

来自分类Dev

读取二进制文件c

来自分类Dev

读取大型二进制文件

来自分类Dev

读取/写入二进制文件

来自分类Dev

分批读取二进制文件

来自分类Dev

从二进制文件中读取

来自分类Dev

读取整数的二进制文件