NumGet

返回存储在指定地址+偏移量处的二进制数.

Number := NumGet(Source, Offset, Type)
Number := NumGet(Source, Type)

参数

Source

类型: 对象整数

缓冲对象或内存地址.

可以使用任何实现 PtrSize 属性的对象, 但此函数针对原生的缓冲对象进行了优化. 传递具有这些属性的对象可以确保函数不会从无效的内存位置读取内存; 否则可能会导致崩溃或其他不可预测的行为.

Offset

类型: 整数

如果为空或省略(或当使用双参数模式时), 默认为 0. 否则, 请指定一个单位为字节的偏移, 将其与 Source 相加, 以确定源地址.

Type

类型: 字符串

下列字符串的其中一个: UInt, Int, Int64, Short, UShort, Char, UChar, Double, Float, Ptr 或 UPtr

不支持 无符号 的 64 位整数, 因为 AutoHotkey 的内置整数类型是 Int64. 因此, 为了处理大于或等于 0x8000000000000000 的数字, 会省略 U 前缀并将任何负数解释为大整数. 例如, -1 在 Int64 中实际上是 0xFFFFFFFFFFFFFFFF(如果期望它为 UInt64). 在 64 位构建中, UPtr 等同于 Int64.

有关详情, 请参阅 DllCall 类型.

返回值

类型: 整数浮点数

函数返回指定地址+偏移处的二进制数字.

一般说明

如果只使用了两个参数, 第二个参数必须是 Type. 例如, NumGet(var, "int") 是有效的.

如果源地址无效, 则可能抛出异常. 然而, 一些无效的地址无法检测到, 并可能导致不可预知的行为. 传递缓冲对象而不是地址可以确保源地址始终能得到验证.

NumPut, DllCall, Buffer 对象, VarSetStrCapacity