数値を2進数・8進数・16進数表現の文字列に変換するには - lisp-cookbook-ja/common-lisp GitHub Wiki
数値を2進数・8進数・16進数表現の文字列に変換するには
print-base で基数を指定するか、format で ~b, ~o, ~x, ~r を使います。
(let ((*print-base* 2))
(prin1-to-string 255)) ;=> "11111111"
(format nil "~b" 255) ;=> "11111111"
(format nil "~o" 255) ;=> "377"
(format nil "~x" 255) ;=> "FF"
(format nil "~8x" 255) ;=> " FF"
(format nil "~8,'0x" 255);=> "000000FF"
(format nil "~vr" 2 255) ;=> "11111111"
(format nil "~vr" 8 255) ;=> "377"
(format nil "~vr" 16 255) ;=> "FF"
リーダで読み戻せる文字列にするには
print-radix に nil以外を指定すると、基数を示す文字列も印字されます。
(let ((*print-base* 16)
(*print-radix* t))
(format nil "~S ~S" #(16) 255))
;=>"#(#x10) #xFF"