从vbscript中的文件获取固定位置的十六进制

从vbscript中的文件获取固定位置的十六进制,vbscript,hex,Vbscript,Hex,所以我有多个文件,在十六进制编辑器中如下所示: Offset(h) 00 01 02 03 04 05 1o 10 20 02 00 0A 05 (...) 2o 10 20 53 00 0A 03 (...) 3o 10 20 22 00 0A 55 (...) 4o 10 20 12 00 0A 22 (...) 知道0A是一个固定的位置,如何获取0A值并将其存储到变

所以我有多个文件,在十六进制编辑器中如下所示:

      Offset(h) 00 01 02 03 04 05

      1o        10 20 02 00 0A 05 (...)

      2o        10 20 53 00 0A 03 (...)

      3o        10 20 22 00 0A 55 (...)

      4o        10 20 12 00 0A 22 (...)
知道0A是一个固定的位置,如何获取0A值并将其存储到变量中?(始终为第5字节)

我需要得到0A值,以便与其他值进行比较并做出决定

我需要在VBscript中执行此操作


提前感谢并感谢您的帮助

在VBSCript中还有其他与此相关的问题/答案,也许它们会对您有所帮助

重要的是要记住,二进制文件(就像任何文件一样)是一个连续的字节流。因此,与其考虑每行的“第5字节”,还不如记住你感兴趣的是第5、10、15等字节


这就是为什么十六进制查看器有一个“偏移量”列来显示字节流的长度。

在vbscript中,只要从头到尾顺序读取,从二进制文件读取就很容易

Dim fso : Set fso = CreateObject("Scripting.FileSystemObject")
Dim BinaryFile : Set BinaryFile = fso.OpenTextFile("content.bin")
BinaryFile.Skip(4)
WScript.echo Hex(Asc(BinaryFile.Read(1))) 'Returns "A"
BinaryFile.Close

我发现如何使用
ADODB.Stream
来解决这个问题:

Const adTypeBinary = 1

Dim byteValue

With CreateObject("ADODB.Stream")
    .Type = adTypeBinary
    .Open
    .LoadFromFile fileName
    .Position = 4 ' could be any byte position
    byteValue = Right(00 & Hex(AscB(.Read(1))), 2) ' Returns 0A
End With

' Print byteValue
WSCript.echo "Value = " & byteValue

这不是最好的链接示例,他们应该使用
ADODB.Stream
,但事实并非如此。@Lankymart-如果您知道更好的示例,请添加其他链接。我必须承认我的VBScript相当生疏:)有趣的是,它没有使用ADODB。你提到的例子是在VB.Net中,而不是VBScript。在编码时你必须小心,这就是为什么
ADODB.Stream
是一个更好的选择。它起作用了!非常感谢你。但我很好奇ADODB会是什么样子。Stream。。。我尝试了很多,但是失败了。最后我发现了如何使用
ADODB.Stream
。做同样的事。另外,我需要在两个字符中输出十六进制值