CLng - 将十六进制值评估为二进制补码和解析(经典ASP和VB脚本)

时间:2014-01-08 15:00:54

标签: parsing vbscript asp-classic twos-complement

我有一个有趣的二元补充问题。

<meta http-equiv="x-ua-compatible" content="IE=10">
<script type="text/vbscript">
     HexVal = "F8" 
     document.write(CLng("&H" & HexVal) & "<br />")
</script>

您可以在IE11(或更早版本?)中运行上述代码,您将看到以下输出:

248

这向我表明,当以十进制形式打印十六进制值时,CLng函数将十六进制值解释为无符号整数。然而,F8实际上是-8两个补码。 如何强制vbscript识别?

1 个答案:

答案 0 :(得分:2)

Function TwoComplement8Bits(value)
    TwoComplement8Bits=CInt(value)
    If TwoComplement8Bits>127 Then 
        TwoComplement8Bits=-1*((Not (TwoComplement8Bits Or &hff00))+1)
    End If
End Function

WScript.Echo TwoComplement8Bits("&hf8")