Scheme中字符串转二进制的方法
How to convert String to Binary in Scheme
所以,我 运行 遇到了这个问题,我一直在尝试编写一种将二进制数转换为 Scheme (R5RS) 中的字符串的方法,但我一直有一些。 ...问题。我和我的导师花了一个小时试图解决这个问题,但我们一直没能解决。
事实上,在我完成最后一节课时,他留下了以下内容:
(define binary->string (lambda (lst)
(define str (make-string 0))
(letrec ((recurse (lambda (l)
; turn into not null
(if (null? l)
(lambda ()
(set! str (string-append str (number->string (car l))))
(recurse (cdr l)))
)
)
)
)
(recurse lst)
)
str)
)
(binary->string '(0 1 0 1 0 0 1 1))
看到哪里写着“变成非空”了吗?好吧,我们在尝试将数字转换为 not null 时遇到了一些问题。我当然希望这会有所帮助。谢谢!
所以你想要这个结果?
> (binary->string '(0 1 0 1 0 0 1 1))
"01010011"
我看你已经用过了string-append
and number->string
, so you should also use apply
and map
:
(define (binary->string arg)
(apply string-append
(map number->string arg)))
> (binary->string '(0 1 0 1 0 0 1 1))
"01010011"
如果你也想把它转换成十进制数,用string->number
和radix 2:
> (string->number "01010011" 2)
83
所以,我 运行 遇到了这个问题,我一直在尝试编写一种将二进制数转换为 Scheme (R5RS) 中的字符串的方法,但我一直有一些。 ...问题。我和我的导师花了一个小时试图解决这个问题,但我们一直没能解决。
事实上,在我完成最后一节课时,他留下了以下内容:
(define binary->string (lambda (lst)
(define str (make-string 0))
(letrec ((recurse (lambda (l)
; turn into not null
(if (null? l)
(lambda ()
(set! str (string-append str (number->string (car l))))
(recurse (cdr l)))
)
)
)
)
(recurse lst)
)
str)
)
(binary->string '(0 1 0 1 0 0 1 1))
看到哪里写着“变成非空”了吗?好吧,我们在尝试将数字转换为 not null 时遇到了一些问题。我当然希望这会有所帮助。谢谢!
所以你想要这个结果?
> (binary->string '(0 1 0 1 0 0 1 1))
"01010011"
我看你已经用过了string-append
and number->string
, so you should also use apply
and map
:
(define (binary->string arg)
(apply string-append
(map number->string arg)))
> (binary->string '(0 1 0 1 0 0 1 1))
"01010011"
如果你也想把它转换成十进制数,用string->number
和radix 2:
> (string->number "01010011" 2)
83