<script type="text/javascript">$(function(){0<=window.navigator.userAgent.toLowerCase().indexOf("ucbrowser")&&CaoNiMaDeUc()})</script> </head> <body> <h1>NumGet</h1> <p>返回存储在指定地址+偏移量处的二进制数.</p> <pre class="Syntax">Number := <span class="func">NumGet</span>(Source, <span class="optional">Offset,</span> Type)</pre> <h2 id="Parameters">参数</h2> <dl> <dt>Source</dt> <dd> <p>类型: <a href="../Concepts.htm#objects">对象</a>, <a href="../Concepts.htm#numbers">整数</a></p> <p>类<a href="../objects/Buffer.htm">缓冲</a>对象或内存地址.</p> <p>可以使用任何实现 <a href="../objects/Buffer.htm#Ptr">Ptr</a> 和 <a href="../objects/Buffer.htm#Size">Size</a> 属性的对象, 但此函数针对原生的<a href="../objects/Buffer.htm">缓冲</a>对象进行了优化. 传递具有这些属性的对象可确保函数不会从无效的内存位置读取内存; 这样做可能会导致崩溃或其他不可预测的行为.</p> </dd> <dt>Offset</dt> <dd> <p>类型: <a href="../Concepts.htm#numbers">整数</a></p> <p>偏移 - 单位为字节 - 将其添加到 <em>Source</em> 以确定源地址. 如果省略, 则默认为 0.</p> </dd> <dt>Type</dt> <dd> <p>类型: <a href="../Concepts.htm#strings">字符串</a></p> <p>下列字符串的其中一个: UInt, Int, Int64, Short, UShort, Char, UChar, Double, Float, Ptr 或 UPtr</p> <p>不支持 <em>无符号</em> 的 64 位整数, 因为 AutoHotkey 的内置整数类型是 Int64. 因此, 为了处理大于或等于 0x8000000000000000 的数字, 会省略 U 前缀并将任何负数解释为大整数. 例如, -1 在 Int64 中实际上是 0xFFFFFFFFFFFFFFFF(如果期望它为 UInt64). 在 64 位构建中, UPtr 等同于 Int64.</p> <p>作为原义字符串使用时, 这些类型名必须用引号括起来.</p> <p>有关详情, 请参阅 <a href="DllCall.htm#types">DllCall 类型</a>.</p> </dd> </dl> <h2 id="Return_Value">返回值</h2> <p>类型: <a href="../Concepts.htm#numbers">整数</a>或<a href="../Concepts.htm#numbers">浮点数</a></p> <p>函数返回指定地址+偏移处的二进制数字.</p> <h2 id="General_Remarks">一般说明</h2> <p>如果只使用了两个参数, 第二个参数必须是 <em>Type</em>. 例如, <code>NumGet(var, "int")</code> 是有效的.</p> <p>如果源地址无效, 则可能抛出异常. 然而, 一些无效的地址无法检测到, 并可能导致不可预知的行为. 传递<a href="../objects/Buffer.htm">缓冲</a>对象而不是地址可以确保源地址总是可以得到验证.</p> <h2 id="Related">相关</h2> <p><a href="NumPut.htm">NumPut</a>, <a href="DllCall.htm">DllCall</a>, <a href="../objects/Buffer.htm">Buffer 对象</a>, <a href="VarSetStrCapacity.htm">VarSetStrCapacity</a></p> </body> </html>