〜 ナンバー 〜
16進数を10進数へ変換

HSP2では、str命令を用いて10進数を16進数に変換することができます。
16進数を10進数に変換する命令についてはヘルプに書かれていませんが、int命令を用いて変換できます。
気付きにくいのは、書かれてないほかに、単純に16進数を渡すだけだと変換出来ないこともあるでしょう。
下記サンプルのように16進数のプレフィックス「$」を先頭に付けることでうまく動きますが、
もう1つのプレフィックス「0x」だと10進数を正常に取得することが出来ません。
HSP3以降のstr関数は、文字列に変換(キャスト)するだけで16進数に変換することは出来ません。
16進数に変換したい場合は、strf関数で「%x」指定を行いましょう。
10進数への変換はHSP2同様の方法で問題ありません。
10・16進数以外の基数に変換する命令・関数は用意されていませんので、
変換する必要がある場合は、コチラコチラを参考にしてみてください。
	

hextodec 16進数
16進数10進数に変換する16進数を指定する。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
#module
#deffunc hextodec str
	mref s, 32
	mref stt, 64
	stt = "$" + s
	int stt
	return
#global

	value = ""
	pos 10, 10 : mes "$"
	pos 20, 10 : input value, 50, 20, 4
	pos 80, 10 : button "変換", *change
	stop

*change
	hextodec value // statに10進数変換した値をセット
	color 255, 255, 255 : boxf 0, 50 : color
	pos 1, 50 : mes "[$" + value + "] -> [" + stat + "]"
	stop

受取先 = hextodec(16進数)
格納先変換した10進数の受取先を指定する。
16進数10進数に変換する16進数を指定する。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
#module
#defcfunc hextodec str string
	return int("$" + string)
#global

	value = ""
	pos 10, 10 : mes "$"
	pos 20, 10 : input value, 50, 20, 4
	pos 80, 10 : button gosub "変換", *change
	stop

*change
	color 255, 255, 255 : boxf 0, 50 : color
	pos 10, 50 : mes "[$" + value + "] -> [" + hextodec(value) + "]" // 10進数変換した値を表示
	return
HSP3からはintは関数となりましたので、マクロにしてみるというのもアリでしょう。
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
#define ctype hextodec(%1) int("$" + %1) // 変換マクロ

	value = ""
	pos 10, 10 : mes "$"
	pos 20, 10 : input value, 50, 20, 4
	pos 80, 10 : button gosub "変換", *change
	stop

*change
	color 255, 255, 255 : boxf 0, 50 : color
	pos 10, 50 : mes "[$" + value + "] -> [" + hextodec(value) + "]" // 10進数変換した値を表示
	return