注册 登录
明经CAD社区 返回首页

snddd2000的个人空间 http://www.mjtd.com/?393651 [收藏] [复制] [分享] [RSS]

日志

[函数]AutoCAD.Lisp十进制和其他进制的正整数的转换

已有 1426 次阅读2013-9-11 23:54 |系统分类:开发| 进制, hex, dec, oct, bin

(defun Decimal-To (int bit / tmp re bestr)
;;; (Decimal-To 33 2) return "100001"
;;; int必须为正整数
;;; bit必须大于1,且小于37(最多用到字母Z)。
(defun bestr (int)
(if (> int 9)
(vl-list->string (list (+ int 55)))
(itoa int)
)
) ;_end sub defun
(if (and (> bit 1) (< bit 37) (> int 0) (equal int (fix int)))
(progn
(setq int (fix int))
(while (>= int bit)
(setq re (bestr (rem int bit)))
(setq tmp (cons re tmp))
(setq int (/ int bit))
)
(setq tmp (cons (bestr int) tmp))
(apply 'strcat tmp)
)
nil
)
)
;;;****************反函数******************;;;
(defun To-Decimal (str bit / tmp re beint)
;;; str必须为函数Decimal-To返回的非nil的值或符合函数Decimal-To的值
;;; bit必须大于1,且小于37(最多用到字母Z)。
;;; (TO-DECIMAL "100001" 2) return 33
(defun beint (char / tmp)
(if (> char 57)
(- char 55)
(atoi (chr char))
)
) ;_end sub defun
(setq tmp (strlen str))
(apply '+
(mapcar '(lambda (x)
(setq tmp (1- tmp))
(* (beint x) (expt bit tmp))
)
(vl-string->list (strcase str))
)
)
)
;;; 二进制加法示例:(DECIMAL-TO (+ (TODECIMAL "1001" 2) (TODECIMAL "1010" 2)) 2)

路过

雷人

握手

鲜花

鸡蛋

评论 (0 个评论)

facelist doodle 涂鸦板

您需要登录后才可以评论 登录 | 注册

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2024-4-29 20:19 , Processed in 0.351946 second(s), 15 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

返回顶部