那么,如何獲取正確的長整數結果呢?只能通過定義長整型變量,對這個16位數先轉換為負數,在求補碼的方式進行調整了。算法如下:
dim n as long ‘如果定義為 Integer ,就會遭遇溢出錯誤
n=val("&H8C48") ’此時結果為 n=-29624,是因為 val 函數的范圍是16位
n=n+&H10000 '求負數的16位補碼, n=35912
‘此時在用Hex函數,可以獲取正確的十六進制結果
debug.print hex(n) -->結果為8C48
3. 以&HXXXX形式表示的十六進制立即數的使用,如果第一位是8XXX,則同樣會認定為負數。示例如下:
dim m as long
m=1
if m>= &H8000 then m=m-&H8000
debug.print m
此時,m的值應該是多少呢?
你或許想得到的值是 m=1,實際上,你的m值是 32769(&H8001)
如何修改呢? 把 &H8000 拆分為 &H7FFF +1,語句變化為:
if m>&H7FFF then m=m-&H7FFF-1
這時你就可以得到你想要的結果了。