十进制转二进制
(defun sr (str)(setq strlst (mapcar '(lambda (x) (- x 48)) (vl-string->list str)))
strlst
)
(defun ften->bin (lst)
(setq blst nil binstr nil)
(while (apply 'or (mapcar '(lambda (x) (/= x 0)) lst ))
(setq flag 0)
(setq lst (mapcar '(lambda (x)
(setq z (/ (+ (* flag 10) x) 2))
(setq flag (rem (+ (* flag 10) x) 2))
z
)
lst
)
)
(setq blst (cons flag blst))
)
(setq binstr (apply 'strcat (mapcar '(lambda (x) (itoa x)) blst)))
binstr
)
(ften->bin (sr (getstring "请输入十进制数n=")))
用在哪方面啊? 434939575 发表于 2014-12-12 22:38 static/image/common/back.gif
用在哪方面啊?
二进制的用处很多啊,举个简单的,用加法来实现乘法就用到二进制。 (defun sr (str)
(setq strlst (mapcar '(lambda (x) (- x 48)) (vl-string->list str)))
strlst
)
(defun ften->bin (lst)
(setq blst nil binstr nil)
(while (apply 'or (mapcar '(lambda (x) (/= x 0)) lst ))
(setq flag 0)
(setq lst (mapcar '(lambda (x)
(setq z (/ (+ (* flag 10) x) 2))
(setq flag (rem (+ (* flag 10) x) 2))
z
)
lst
)
)
(setq blst (cons flag blst))
)
(setq binstr (apply 'strcat (mapcar '(lambda (x) (itoa x)) blst)))
binstr
)
(ften->bin (sr (getstring "请输入十进制数n=")));能否用于幂计算十进制转二进制 回帖是一种美德!感谢楼主的无私分享 谢谢 搜了一下进制转换,就发现这一个帖子,就是转换效率有点惨不忍睹。 本帖最后由 mahuan1279 于 2018-4-9 16:27 编辑
yxp 发表于 2018-4-2 02:59
搜了一下进制转换,就发现这一个帖子,就是转换效率有点惨不忍睹。
不知你的数据是什么?会导致惨不忍睹的效果? 本帖最后由 yxp 于 2018-4-10 10:04 编辑
BASE64码的转换时,需要对二进制数据操作,贴一个我的转换程序
;;十进制转换为二进制
(defun d2b(i / s)
(while(> i 0)(setq s (cons(logand i 1) s) i (lsh i -1)))s
)
yxp 发表于 2018-4-10 10:01
BASE64码的转换时,需要对二进制数据操作,贴一个我的转换程序
移位和逻辑运算效率的确很高,但1秒和0.01秒在视觉上没什么区别,谈不上惨不忍睹吧。我只是想对任意输入数值都可转换,你的数据超过22亿就不行了。
页:
[1]