さくらんぼのlambda日記

lambdaちっくなことからゲーム開発までいろいろ書きます。

数値を2進数・8進数・16進数表現の文字列に変換するには

GW中なのにも関わらず更新できてない!
腹を切って死ぬべきです。

さて掲題の課題ですがformat関数を使えば簡単に実現できそうですね。
ところでformat関数はオプションが多すぎてさっぱり分からないです。
http://super.para.media.kyoto-u.ac.jp/~tasuku/format-func.html

上記のようなサイトもあるんですが、なかなか使いこなすところまではいけないです。

どうやら"~vR"のオプションでいけそうですね。

2.3.5 ~R — Radix

arg の消費: 1個

パラメータ: ~ radix , mincol , padchar , commachar , comma-interval R
1つでもパラメータを指定した場合とすべて省略した場合で機能がまったく違う.
まず,パラメータを指定した場合,消費した arg の値を radix 進で表示する (デフォルトは10進) .
このとき,それ以降のパラメータや修飾子の意味は ~D , ~B , ~O , ~X と同じである.

さて試してみます。

; 255を16進で表示してみる
(format nil "~vR" 16 255)
"FF"
; 255を2進で表示してみる
(format nil "~vR" 2 255)
"11111111"

簡単ですね!