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
      • // do nothing

テスト実行はこちら
  • 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