可以看出;
1)小于128的整数用 32 xx 表示,数字占用一个字节
2)大于127的整数用33 xx xx xx xx 表示,数字占用4个字节
3)2147483647是最大的整数,是33 FF FF FF 7F,比它大的整数都变成了带小数点的实数。
4)4294967297是3B 32 31 34 37 34 38 33 36 34 39 2E 30,直接是用ascii编码的字符串
现在有个问题,如果需要大于的2147483647的整数,该怎么办呢?
在64位acad下再做一个试验:
命令: (load "c:/00/trf_9.fas")
命令: (tranf "_addr-of")
T
命令: (_addr-of princ)
2095471388416
命令: (setq a(_addr-of princ))
2095471388416
命令: (type a)
INT
命令: !a
2095471388416
_addr-of是一个保留函数,它的作用是读取一个符号的内存地址,内存地址是个大整数。
但这个大整数有点问题,不能进行任何运算,+1就变成小整数了。
命令: (setq h 2147483649)
2.14748e+09
命令: (type h)
REAL
命令: (setq y 2147483647)
2147483647
命令: (type y)
INT
已经很不错了,以前的版本,超过直接砍断,为了这,没少出错。现在的版本自动变成real,已经非常牛的了