|
|
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
|
|