首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在运行32位office的uint64应用程序中检索VBA值

在运行32位office的uint64应用程序中检索VBA值
EN

Stack Overflow用户
提问于 2016-11-11 22:57:07
回答 1查看 158关注 0票数 0

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

这方面的代码片段如下:

代码语言:javascript
复制
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

需要将变量'Value‘声明为与Unit64等效的VBA,但由于我运行的是32位版本的office,因此遇到了一些麻烦。我尝试声明为Double,但没有返回正确的值。不知道为什么。

如有任何建议,我们将不胜感激

谢谢

EN

回答 1

Stack Overflow用户

发布于 2016-11-12 00:05:48

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

代码语言:javascript
复制
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

这就产生了

代码语言:javascript
复制
64636261      68676665

61
62
63
64
65
66
67
68

因此,您可能会更喜欢使用Byte数组(并从中创建您的数字)。

(嗯,这取决于数字是如何存储的。尝试一下。)

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40550606

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档