所以,我遇到了這個問題,我一直在嘗試撰寫一種將二進制數轉換為 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))
看看它在哪里說“變成不為空”?好吧,我們在嘗試將數字轉換為非空時遇到了一些問題。我當然希望這會有所幫助。謝謝!
uj5u.com熱心網友回復:
所以你想要這個結果?
> (binary->string '(0 1 0 1 0 0 1 1))
"01010011"
我看到你已經使用了string-appendand number->string,所以你也應該使用applyand 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基數2:
> (string->number "01010011" 2)
83
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/460734.html
上一篇:如何僅列出已啟用的本地管理員
