在运行32位局的vba应用程序中检索uint64值

时间:2016-11-11 14:57:07

标签: c++ vba access-vba

我有一些vba编码用于以二进制模式打开文件并将值存储到vriable以供后续使用。我有关于文件结构的信息(我认为文件是用C或C ++开发的程序创建的)所以知道文件中位置的偏移量,并且它的数据类型是Uint64(所以8字节)。

此代码段如下:

Dim strFile as String

Dim p as Long

strFile = "Testfile"

Open strFile For Binary As #1    ' Open file.

p = 1024 ' position of variable in file

Get 1, p, Value

变量'值'需要声明为等同于Unit64的VBA,但由于我运行的是32位版本的办公室,我有点卡住了。我尝试声明为Double但这并没有返回正确的值。不知道为什么。

非常感谢任何建议

谢谢

1 个答案:

答案 0 :(得分:0)

整数数组可能是最好的选择。

Sub TestGetBin()

    Dim DataByte(0 To 7) As Byte
    Dim DataLong(0 To 1) As Long
    Dim i As Long

    ' File contains "abcdefghijklmnopq"
    Open "D:\abc.txt" For Binary As #1

    Get 1, 1, DataByte
    Get 1, 1, DataLong

    Debug.Print Hex(DataLong(0)), Hex(DataLong(1))

    For i = 0 To 7
        Debug.Print Hex(DataByte(i))
    Next i

    Close #1

End Sub

这会产生

64636261      68676665

61
62
63
64
65
66
67
68

所以你可能会对Byte数组更开心(并从中创建你的数字) (好吧,取决于号码的存储方式。尝试一下。)