将一个或多个数字以二进制格式存储到指定地址+偏移的位置.
NumPut Type, Number, Type2, Number2, ... Target , Offset
类型: 字符串
下列字符串的其中一个: UInt, UInt64, Int, Int64, Short, UShort, Char, UChar, Double, Float, Ptr 或 UPtr
对于所有整数类型, 或者在传递纯整数时, 有符号与无符号并不影响结果, 因为使用了二进制补码来表示有符号整数.
作为原义字符串使用时, 这些类型名必须用引号括起来.
有关详情, 请参阅 DllCall 类型.
类型: 整数
要保存的数字.
类缓冲对象, 内存地址.
可以使用任何实现 Ptr 和 Size 属性的对象, 但此函数针对原生的缓冲对象进行了优化. 传递具有这些属性的对象可确保函数不会将内存写入无效位置; 这样做可能会导致崩溃或其他不可预测的行为.
类型: 整数
偏移 - 以字节为单位 - 将其添加到 Target 以确定目标地址. 如果省略, 则默认为 0.
类型: 整数
函数返回最后写入的项右边的地址. 这在写入一个不连续的数字序列时, 例如在 DllCall 中使用的结构, 有些字段没有被设置, 就可以使用这个函数. 但是, 在许多情况下, 指定多个 Type, Number 对更简单有效. 将地址传回 NumPut 比传给一个具有更新的 Offset 的类 Buffer 对象更不安全.
可以在第一个 Number 之后, 通过重复任意次数的 Type 和 Number 来写入数字序列. 每个数字都写入前一个数字之后的下一个字节, 不带填充. 创建用于 DllCall 的结构时, 请注意, 由于数据对齐要求, 某些字段可能需要添加显式填充.
如果整数太大而无法放入指定的 Type, 那么它的高位会被忽略; 例如 NumPut("Char", 257, buf)
将存储数字 1.
如果目标地址无效, 则可能抛出异常. 但是, 一些无效地址不能被检测到, 并可能导致不可预知的行为. 传递缓冲对象而不是地址可以确保目标地址总是可以得到验证.