Module : 進数変換

HSPで、二進数数値・十六進数数値と文字の相互変換を行ないます。

;-----------------
; 8bitで表される数値→文字型2進数
; transform10_2 p1,p2
;
; p1=文字型変数
; p2=8bit数値
;-----------------

#module
#deffunc transform10_2 val,int
mref code,24 ;文字型変数
mref number,1 ;8bit数値
dim bit,1
code="" ;初期化
repeat 8

bit=number&1
code=""+bit+code
number=number>>1

loop
return
#global
;------------------
; 文字型16進数→数値
; transform16_10 p1,p2
;
; p1=数値型変数
; p2=文字型16進数
;------------------

#module
#deffunc transform16_10 val,str
mref sum,16
mref code,33
dim length,1
dim counter,1
dim hexa,1
sum=0
strlen length,code
counter=length-1
repeat length
peek hexa,code,cnt
if hexa>96 { hexa-=39 }
else if hexa>64 { hexa-=7 }
hexa-=48
hexa=hexa<<(counter*4)
sum+=hexa
counter--
loop
return
#global
;-----------------
; 文字型2進数→数値
; transform2_10 p1,p2
;
; p1=数値型変数
; p2=文字型2進数
;-----------------

#module
#deffunc transform2_10 val,str
mref sum,16 ;数値
mref code,33 ;文字型2進数
sum=0
dim counter,1
dim length,1

strlen length,code ;2進数の桁
counter=length-1
repeat length ;桁数だけループ
strmid binary,code,cnt,1 ;2進数を取り出す
int binary
binary=binary<<counter ;ビットシフト
sum+=binary
counter--
loop
return
#global