hinekure.net が http://hspdev-wiki.net/ から自動クローリングした結果を表示しています。画像やリソースなどのリンクが切れています。予めご了承ください。
数値書式変換 - HSP開発wiki
トップ    編集凍結 差分バックアップ添付複製名前変更リロード   新規一覧単語検索最終更新   最終更新のRSS

小ワザ

○進数の相互変換

ここでは2/8/16/10進数の相互変換の方法について解説します。

10進数→16/8/2/任意進数

strf関数を使うと簡単に変換できます。

Everything is expanded.Everything is shortened.
  1
  2
  3
  4
 
 
 
 
a = strf("%x", 255)    ;16進数
mes a
a = strf("%o", 10)    ;8進数
mes a

APIを使用することで任意の進数の文字列に変換することが出来ます。

Everything is expanded.Everything is shortened.
  1
  2
  3
  4
  5
  6
  7
 
 
 
 
 
 
 
#uselib "msvcrt"
#func ltoa "_ltoa" int,var,int
sdim a,64
ltoa 11, a, 2 : mes "11 = " + a + "( 2進数)"
ltoa 11, a, 8 : mes "11 = " + a + "( 8進数)"
ltoa 11, a,16 : mes "11 = " + a + "(16進数)"
ltoa 11, a, 3 : mes "11 = " + a + "( 3進数)"

セキュリティが強化されたバージョン

Everything is expanded.Everything is shortened.
  1
  2
  3
  4
  5
  6
  7
 
 
 
 
 
 
 
#uselib "msvcrt"
#func ltoa_s "_ltoa_s" int,var,int,int
sdim a,64
ltoa_s 11, a, 64, 2 : mes "11 = " + a + "( 2進数)"
ltoa_s 11, a, 64, 8 : mes "11 = " + a + "( 8進数)"
ltoa_s 11, a, 64,16 : mes "11 = " + a + "(16進数)"
ltoa_s 11, a, 64, 3 : mes "11 = " + a + "( 3進数)"



10進数→2進数
/小ワザ/ビット操作#zf302537

16/8/2/任意進数→10進数

16進数→10進数の場合はintを使うと手軽に行えます。

Everything is expanded.Everything is shortened.
  1
  2
 
 
mes int("$ff")
mes $ff

しかし、2/8進数ではこの方法を使用することは出来ません。
そこでAPIのstrtoulを使って変換します。

Everything is expanded.Everything is shortened.
  1
  2
  3
  4
  5
  6
  7
  8
  9
 
 
 
 
 
 
 
 
 
#uselib "msvcrt"
#cfunc strtoul "strtoul" str, nullptr, int
    mes strtoul("111", 2)    ;2進数
    mes %111
 
    mes strtoul("12", 8)        ;8進数
 
    mes strtoul("FF", 16)        ;16進数
    mes $ff

上手くいかない例

2進数→10進数

Everything is expanded.Everything is shortened.
  1
  2
 
 
mes int("%11")
mes %11

16進数→10進数

Everything is expanded.Everything is shortened.
  1
  2
  3
 
 
 
#cfunc strtol "strtol" str, nullptr, int
    mes strtol("ffffffff", 16)
    mes 0xffffffff

コメント

  • 公式掲示板の方で_ltoa関数という便利なのが紹介されていたので、こっちにも掲載。moaさんありがとう。 -- GENKI? 2009-04-08 (水) 23:45:33

URL B I U SIZE Black Maroon Green Olive Navy Purple Teal Gray Silver Red Lime Yellow Blue Fuchsia Aqua White

トップ    編集凍結 差分バックアップ添付複製名前変更リロード   新規一覧単語検索最終更新   最終更新のRSS
Last-modified: 2009-04-08 (水) 23:45:33 (1704d)