马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?立即注册
×
 - ;; int2hex.lsp
- ;; Base-10 Integer to Hexadecimal converter.
- ;; Accepts positive or negative integer argument, including 0.
- ;; Rejects non-integer argument with Alert.
- ;; Kent Cooper, January 2011
- (defun int2hex (int / power neg int result div remain posval)
- (if (/= (type int) 'INT)
- (progn (alert "Requires integer argument.") (quit))
- )
- (setq power 1
- neg (minusp int)
- int (abs int)
- result ""
- )
- (while (> int 0)
- (setq div (expt 16 power)
- remain (rem int div)
- posval (/ remain (expt 16 (1- power)))
- int (- int remain)
- result (strcat (if (< posval 10)
- (itoa posval)
- (chr (+ 55 posval))
- )
- result
- )
- power (1+ power)
- ) ; end setq
- ) ; end while
- (strcat (if neg
- "-"
- ""
- )
- (if (= result "")
- "0"
- result
- )
- )
- ) ; end defun - int2hex
- ;; hex2int.lsp
- ;; Hexadecimal to base-10 Integer converter [e.g. for entity handles]
- ;; Modified/simplified from Frank Oquendo's (basetodecimal) function.
- ;; Added negative-argument capability and argument validity controls.
- ;; Kent Cooper, January 2011
- (defun hex2int (hndl / result neg power tmp)
- (if (/= (type hndl) 'STR)
- (progn (alert "Requires string argument.") (quit))
- )
- (setq hndl (strcase hndl)
- result 0
- )
- (if (= (substr hndl 1 1) "-")
- (setq neg T
- hndl (substr hndl 2)
- )
- )
- (if (/= (vl-string-trim "0123456789ABCDEF" hndl) "")
- (progn (alert "Invalid hexadecimal string.") (quit))
- ) ; end if
- (repeat (setq power (strlen hndl))
- (setq result (+ result
- (* (- (setq tmp (ascii (substr hndl 1 1)))
- (if (> tmp 64)
- 55
- 48
- )
- )
- (expt 16 (setq power (1- power)))
- )
- )
- hndl (substr hndl 2)
- ) ; end setq
- ) ; end while
- (if neg
- (- result)
- result
- )
- ) ; end defun - hex2int
|