16進数文字列を数値に変換するサンプル
概要
「こんな処理したいんだけどそういうコマンドはある?」
と思ったときに調べることももちろん重要ですが、あえて自分で作ってしまうというのも新しい言語を習得する際には効果があります。
mainを実行すると入力欄が出てくるので、そこに16進数を入れてください。
例えば"80"なら128、"ff"なら255、"ffff"なら65535が返ってきます。
"//"で始まるコメント行は入力する必要ありません。
data
actions
hex2binはprivate設定
- action hex2bin(hex:String) returns bin:Number
- // hexが空だったら0を返す
- bin := 0
- if not hex → is empty then
- // hexの"abcdef"を大文字の"ABCDEF"に統一
- var h := hex → to upper case
- // 16進の倍率
- var v := 1
- // hexの文字数の最後の文字から変換開始
- var i := hex → count - 1
- // 変換
- while i ≧ 0 do
- // 文字の判定
- var n := "0123456789ABCDEF → index of(h → substring(i,1)),0)
- // 不正な文字ならとりあえず0ということにする
- if n < 0 then
- n := 0
- else
- // do nothing
- // 文字の数値に倍率をかけて加算
- bin := bin + (n * v)
- // 倍率を次の桁のために16倍する
- v := v * 16
- // 参照する文字を1つ先頭に移動
- i := i - 1
- else
テスト実行はこちら
- action main()
- // 無限ループにして繰返し実行できるようにする
- while true do
- // 文字列入力欄を表示
- var s := wall → ask string("enter hex string")
- // 変換して結果を表示
- code → hex2bin(s) → post to wall
events
なし
最終更新:2011年10月28日 21:35