あんまりFILE分割せずに3つまとめてみました
引っ張ってきたのは
LIGHT GREPの結果 FILE_step_String_else.hsp LINE:3#module step_s_can_2byte sar,index LINE:8#modfunc local set str value LINE:11#modfunc local set_index int p LINE:15#modcfunc local one_get LINE:33#modcfunc local multi_get str type LINE:46#module m_tb_char2int LINE:48#defcfunc tb_char2int str p1,int p2 LINE:67#defcfunc tb_char2int16 str p LINE:73#defcfunc tb_char2int10 str p LINE:80#module m_int2one_or_two_str LINE:81#define global ctype get_int2one_or_two_str(%1,%2=16) int2one_or_two_str(%1,%2) LINE:82#defcfunc int2one_or_two_str int p1,int p2 LINE:91#defcfunc int2one_str int p LINE:96#defcfunc int2two_str_16 int p LINE:108#defcfunc int2two_str_10 int p |
文字列配列step操作
int→1byte or 2byte文字変換モジュール
#module step_s_can_2byte sar,index #modinit int p sdim sar,p index=0 return #modfunc local set str value sar=value return #modfunc local set_index int p index=p return // 数値を一文字返す #modcfunc local one_get if strlen(sar)>index{ n=peek(sar,index) if ((n>=129)&(n<=159) )|( (n>=224)&(n<=252)){ index++ n2=peek(sar,index) index++ num=n*256+n2 return num }else{ index++ return n } } return -1 // 文字列からtypeによって数値か文字列を返す // 返すのは2byte文字(1文字目が2byte文字の時)か1byte文字 // type:"int":数値を返す:"str":文字列を返す #modcfunc local multi_get str type if type=="int"{ return one_get@step_s_can_2byte(thismod) } if type=="str"{ return int2one_or_two_str(one_get@step_s_can_2byte(thismod),16) } logmes "multi_get内のerror" logmes "p1の値はintかstrにして下さい" logmes "p1:"+p1 stop #global #module m_tb_char2int // 2byte文字を数字に変換して返す #defcfunc tb_char2int str p1,int p2 if strlen(p1)!=2{ logmes "tb_char2int内のerror" logmes "tb_char2intに渡す文字列の長さは2にして下さい" logmes "p1:"+p1 return -1 } if (p2==10|p2==16)==0{ logmes "tb_char2int内のerror" logmes "tb_char2intに渡すp2の値は10か16にして下さい" logmes "p2:"+p2 return -2 } // p2の値が10ならtb_char2int10 if p2==10{ return tb_char2int10(p1) } // p2の値が16ならtb_char2int16 if p2==16{ return tb_char2int16(p1) } return 1 // 2byte文字を数字に変換して返す 1byte目*256+2byte目 #defcfunc tb_char2int16 str p t=p n=peek(t,0)*256 n+=peek(t,1) return n // 2byte文字を数字に変換して返す 1byte目*1000+2byte目 #defcfunc tb_char2int10 str p t=p n=peek(t,0)*1000 n+=peek(t,1) return n #global // 数字の文字を返す #module m_int2one_or_two_str #define global ctype get_int2one_or_two_str(%1,%2=16) int2one_or_two_str(%1,%2) #defcfunc int2one_or_two_str int p1,int p2 if 256 > p1:return int2one_str(p1) if p2==10:return int2two_str_10(p1) if p2==16:return int2two_str_16(p1) logmes "int2one_or_two_str内のerror" logmes "int2one_or_two_strに渡すp2の値は16か10にして下さい" logmes "p2:"+p2 return "false" // pの値の数字の文字を返す #defcfunc int2one_str int p sdim s,16 poke s,0,p // pの値の数字の2byte文字を返す return s #defcfunc int2two_str_16 int p if 256>p{ logmes "int2two_str_16内のerror" logmes "tb_char2intに渡すpの値は256以上にして下さい" logmes "p:"+p return "false" } sdim s,16 poke s,0,(p/256) poke s,1,(p\256) return s // pの値の数字の2byte文字を返す。値は1byte目*1000+byte目 #defcfunc int2two_str_10 int p if 1000>p{ logmes "int2two_str_10内のerror" logmes "tb_char2intに渡すpの値は1000以上にして下さい" logmes "p:"+p return "false" } sdim s,16 poke s,0,(p/1000) poke s,1,(p\1000) return s #global logmes int2two_str_16(tb_char2int("あ",16))+":"+str(tb_char2int("あ",16)) logmes int2two_str_16(tb_char2int("い",16))+":"+str(tb_char2int("い",16)) logmes int2two_str_16(tb_char2int("う",16))+":"+str(tb_char2int("う",16)) logmes int2two_str_16(tb_char2int("ア",16))+":"+str(tb_char2int("ア",16)) logmes int2two_str_16(tb_char2int("イ",16))+":"+str(tb_char2int("イ",16)) logmes int2two_str_16(tb_char2int("ウ",16))+":"+str(tb_char2int("ウ",16)) logmes int2two_str_16(tb_char2int("一",16))+":"+str(tb_char2int("一",16)) logmes int2two_str_16(tb_char2int("二",16))+":"+str(tb_char2int("ニ",16)) logmes int2two_str_16(tb_char2int("三",16))+":"+str(tb_char2int("三",16)) logmes int2two_str_10(tb_char2int("あ",10))+":"+str(tb_char2int("あ",10)) logmes int2two_str_10(tb_char2int("い",10))+":"+str(tb_char2int("い",10)) logmes int2two_str_10(tb_char2int("う",10))+":"+str(tb_char2int("う",10)) logmes int2two_str_10(tb_char2int("ア",10))+":"+str(tb_char2int("ア",10)) logmes int2two_str_10(tb_char2int("イ",10))+":"+str(tb_char2int("イ",10)) logmes int2two_str_10(tb_char2int("ウ",10))+":"+str(tb_char2int("ウ",10)) logmes int2two_str_10(tb_char2int("一",10))+":"+str(tb_char2int("一",10)) logmes int2two_str_10(tb_char2int("二",10))+":"+str(tb_char2int("ニ",10)) logmes int2two_str_10(tb_char2int("三",10))+":"+str(tb_char2int("三",10)) logmes str(tb_char2int("aa",10)) logmes str(tb_char2int("あ",10)) logmes str(tb_char2int("abc",10)) logmes str(tb_char2int("いい",10)) logmes str(tb_char2int("あ",10)) logmes str(tb_char2int("あ",16)) logmes str(tb_char2int("あ",9)) logmes "あ:"+str(tb_char2int("あ",16)) logmes "あ:"+str(tb_char2int("あ",10)) logmes "い:"+str(tb_char2int("い",16)) logmes "い:"+str(tb_char2int("い",10)) logmes "う:"+str(tb_char2int("う",16)) logmes "う:"+str(tb_char2int("う",10)) logmes "ア:"+str(tb_char2int("ア",16)) logmes "ア:"+str(tb_char2int("ア",10)) logmes "イ:"+str(tb_char2int("イ",16)) logmes "イ:"+str(tb_char2int("イ",10)) logmes "ウ:"+str(tb_char2int("ウ",16)) logmes "ウ:"+str(tb_char2int("ウ",10)) logmes "一:"+str(tb_char2int("一",16)) logmes "一:"+str(tb_char2int("一",10)) logmes "二:"+str(tb_char2int("二",16)) logmes "二:"+str(tb_char2int("二",10)) logmes "三:"+str(tb_char2int("三",16)) logmes "三:"+str(tb_char2int("三",10)) logmes "あ:"+str(tb_char2int16("あ")) logmes "あ:"+str(tb_char2int10("あ")) logmes "い:"+str(tb_char2int16("い")) logmes "い:"+str(tb_char2int10("い")) logmes "う:"+str(tb_char2int16("う")) logmes "う:"+str(tb_char2int10("う")) logmes "ア:"+str(tb_char2int16("ア")) logmes "ア:"+str(tb_char2int10("ア")) logmes "イ:"+str(tb_char2int16("イ")) logmes "イ:"+str(tb_char2int10("イ")) logmes "ウ:"+str(tb_char2int16("ウ")) logmes "ウ:"+str(tb_char2int10("ウ")) logmes "一:"+str(tb_char2int16("一")) logmes "一:"+str(tb_char2int10("一")) logmes "二:"+str(tb_char2int16("二")) logmes "二:"+str(tb_char2int10("二")) logmes "三:"+str(tb_char2int16("三")) logmes "三:"+str(tb_char2int10("三")) logmes int2one_str('A')+":"+'A' logmes int2one_str('B')+":"+'B' logmes int2one_str('C')+":"+'C' logmes int2one_str('a')+":"+'a' logmes int2one_str('b')+":"+'b' logmes int2one_str('c')+":"+'c' logmes int2one_str('0')+":"+'0' logmes int2one_str('1')+":"+'1' logmes int2one_str('2')+":"+'2' logmes int2one_str('\\')+":"+'\\' logmes int2one_str('\"')+":"+'\"' logmes int2one_str(' ')+":"+' ' logmes get_int2one_or_two_str('a')+":"+'a' logmes get_int2one_or_two_str('A')+":"+'A' logmes get_int2one_or_two_str('1')+":"+'1' logmes get_int2one_or_two_str(' ')+":"+' ' logmes get_int2one_or_two_str(tb_char2int("あ",16))+":"+str(tb_char2int("あ",16)) logmes get_int2one_or_two_str(tb_char2int("ア",16))+":"+str(tb_char2int("ア",16)) logmes get_int2one_or_two_str(tb_char2int("一",16))+":"+str(tb_char2int("一",16)) //logmes "あ:"+str(tb_char2int("あ",16)) //logmes int2one_str_16(tb_char2int("あ",16))+":"+str(tb_char2int("あ",16)) logmes int2one_str('B')+":"+'B' logmes int2one_str('C')+":"+'C' logmes int2one_str('a')+":"+'a' logmes int2one_str('b')+":"+'b' newmod sa,step_s_can_2byte,64 set@step_s_can_2byte sa,"abcあいうdefアイウ" repeat 48 logmes multi_get@step_s_can_2byte(sa,"str") loop set_index@step_s_can_2byte sa,0 repeat 48 logmes str(multi_get@step_s_can_2byte(sa,"int")) loop |