热门标签 | HotTags
当前位置:  开发笔记 > 开发工具 > 正文

将二进制字符串转换为数字

如何解决《将二进制字符串转换为数字》经验,为你挑选了2个好方法。

很简单,但是我似乎找不到答案。我有一个1和0的字符串,例如"01001010"-如何将其解析为数字?



1> Amadan..:

使用string-to-number,可以选择接受基础:

(string-to-number "01001010" 2)
;; 74


请注意,如果无法将STRING解析为整数或浮点数,则此函数将返回0。谨防!

2> coredump..:

如@sds在注释中所解释,string-to-number如果转换失败,则返回0。这是不幸的,因为返回值0也可能意味着解析成功。我宁愿使用此功能的Common Lisp版本cl-parse-integer。Hyperspec中描述了标准函数,而Emacs Lisp中的标准函数略有不同(特别是,没有辅助返回值):

(cl-parse-integer STRING &key START END RADIX JUNK-ALLOWED)

STARTEND解析STRING子字符串中的整数。STRING 可能由空白字符(语法为的字符)包围。其他非数字字符被视为垃圾。RADIX是2到36之间的整数,默认值为10。如果STARTEND之间的子字符串不能解析为整数,除非JUNK-ALLOWED不为null,则发出错误信号。‘ ’

(cl-parse-integer "001010" :radix 2)
=> 10

(cl-parse-integer "0" :radix 2)
=> 0

;; exception on parse error
(cl-parse-integer "no" :radix 2)
=> Debugger: (error "Not an integer string: ‘no’")

;; no exception, but nil in case of errors
(cl-parse-integer "no" :radix 2 :junk-allowed t)
=> nil

;; no exception, parse as much as possible
(cl-parse-integer "010no" :radix 2 :junk-allowed t)
=> 2


推荐阅读
author-avatar
天涯s1_278
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有