title: How to read from a binary file using VBScript
body: <p>I'm very new to VBScript, correct me at any point, if I'm wrong.</p>
  
  <p>I'm facing issue while reading from a binary file.</p>
  
  <p>My need is to read the last four bytes from a binary file and compare the same with a local variable.</p>
  
  <p>But the issue is I'm getting value of <code>0x3F</code> while converting the ASCII characters (of last 4 bytes) to Hex equivalent. But I'm able to see valid data in the files created by this script by opening, where the same binary stream is used to write to file.</p>
  
  <p>I'm not sure if I'm missing something</p>
  
  <p>Below is the code for reference</p>
  
  <pre><code>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)
  </code></pre>