在Racket中打印填充的二进制字

The*_*ire 4 racket

我想在Racket中以二进制打印填充到32位字.我知道printf和"~b",但我希望它每次填充为32位长.我该怎么做呢?

(printf "~b" 42) 
=> 101010
Want: 00000000000000000000000000101010
Run Code Online (Sandbox Code Playgroud)

Asu*_*awa 9

这是使用Racket 5.3.1及以上版本的简洁方法:

Welcome to Racket v5.3.2.3.
-> (require racket/format)
-> (~r 42 #:base 2 #:min-width 32 #:pad-string "0")
"00000000000000000000000000101010"
Run Code Online (Sandbox Code Playgroud)

有关详细信息,请参阅球拍/格式.

在较旧的Racket版本中,您可以这样做:

Welcome to Racket v5.3.
-> (require srfi/13)
-> (string-pad (number->string 42 2) 32 #\0)
"00000000000000000000000000101010"
Run Code Online (Sandbox Code Playgroud)