|
k-1 さん、こんばんは。
杉浦 まさき です。
#田楽サーバのバグの件はもう少しお待ちを…m(_ _)m。
>10進による足し算はたとえば
>##aaa = ##aaa + 1
>とやれば1000まででも2000まででも際限なくできますが、
>16進で例えば0000hからFFFFhまで足し算をしたい場合は
>そのように記述すれば良いのでしょうか。
10 進か 16 進かは単に表示の問題ですから、
数値の足し算自体は上のと同じです。
あとは数値を 16 進数表示に変換、またはその逆の変換を
するような処理を行えばよいのですが…
なんか久しぶりに書いたスクリプトなんで
全然スマートじゃない&負の数の場合は結果がおかしい(^^;ですが、
以下のような感じでいけると思います。
#せめて & 演算子が欲しかった…。
; 呼出しのサンプル
call num2hex 12345
#hex = #return
message #hex ; "00003039"
call hex2num #hex
message #return ; "12345"
exit
; 数値を 8 桁の 16 進数に変換
; バグ:負の数は扱えない
num2hex:
##p = value(#1)
#ret = ""
##a = 0
while (##a < 8)
##n = ##p % 16 ; ##p < 0 の場合は…??
#ret = part("0123456789ABCDEF",##n,1) + #ret
##p = ##p / 16 ; 4bit arithmetic right shift (^^;
##a = ##a + 1
endwhile
return #ret
; 16 進数を数値に変換
; バグ:負の数は扱えない
hex2num:
##ret = 0
##len = length(#1)
##a = 0
while (##a < ##len)
##ret = ##ret * 16 ; 4bit left shift
#s = part(#1,##a,1)
##n = length(drop("0123456789ABCDEF",toupper(#s)))
##ret = ##ret + ##n
##a = ##a + 1
endwhile
return ##ret
|
|