数値文字列を文字コードに
文字コードを数値に変換するモジュール
今やってるモジュールが10進も可で変換するのではなく
主に16進の文字列に変換するのでモジュールを改造してみました
FILE名:FILE_int2char_char2int_02.hsp
主に16進の文字列に変換するのでモジュールを改造してみました
FILE名:FILE_int2char_char2int_02.hsp
#module int2char_02 // 引数(0〜15)の16進表記を返す // 引数の値が0〜15でないとerror #defcfunc one_at_int2char_02 int cc if (cc<=-1)|(cc>=16){ logmes "one_at_int2char内のerror" logmes "引数は0〜15の値にして下さい" logmes "引数の値:"+str(cc) return -1 } switch cc case 0 :return "0" case 1 :return "1" case 2 :return "2" case 3 :return "3" case 4 :return "4" case 5 :return "5" case 6 :return "6" case 7 :return "7" case 8 :return "8" case 9 :return "9" case 10 :return "a" case 11 :return "b" case 12 :return "c" case 13 :return "d" case 14 :return "e" case 15 :return "f" swend return -1 // 引数cを文字列に変換して返す // 引数cの値が0〜255でないとerror // 2桁の数字を返す #defcfunc some_at_int2char_02 int c if (c<=-1)|(c>=256){ logmes "some_at_int2char内のerror" logmes "第一引数は0〜255の値にして下さい" logmes "第一引数の値:"+str(c) return "error" } t=0 tt=0 t=c/16 tt=c\16 return ""+str(one_at_int2char_02(t))+str(one_at_int2char_02(tt)) #global #module char2int_02 // 16進表記の引数(0〜15)を数値に変換して返す // 引数の長さが1でないとerror // 引数の値が0,1,2,3,4,5,6,7,8,9,a,b,c,d,e,fの // どれかでないとerror #defcfunc one_at_char2int_02 str cc f=0 ff=0 fff=0 l=strlen(cc) if l!=1{ logmes "one_at_char2int内のerror" logmes "文字列型引数ccの長さは1にして下さい" logmes "引数の長さ:"+l return -1 } if (cc=="0")|(cc=="1")|(cc=="2")|(cc=="3")|(cc=="4"){f=1} if (cc=="5")|(cc=="6")|(cc=="7")|(cc=="8")|(cc=="9"){ff=1} if (cc=="a")|(cc=="b")|(cc=="c")|(cc=="d")|(cc=="e")|(cc=="f"){fff=1} if (f==0)&(ff=0)&(fff=0){ logmes "one_at_char2int内のerror" logmes "引数は" logmes "0,1,2,3,4,5,6,7,8,9,a,b,c,d,e,f" logmes "のどれかにして下さい" logmes "引数の値:"+cc return -1 } switch cc case "0":return 0 case "1":return 1 case "2":return 2 case "3":return 3 case "4":return 4 case "5":return 5 case "6":return 6 case "7":return 7 case "8":return 8 case "9":return 9 case "a":return 10 case "b":return 11 case "c":return 12 case "d":return 13 case "e":return 14 case "f":return 15 swend return -1 // 引数cを文字列に変換して返す // 引数cの値が0〜255でないとerror #defcfunc some_at_char2int_02 str c l=strlen(c) if (l!=2){ logmes "some_at_char2int内のerror" logmes "文字列型引数cの長さは2にして下さい" logmes "引数の長さ:"+l logmes "引数の値:"+c return "error" } ccc=c n=strmid(ccc,0,1) m=strmid(ccc,1,1) mm= (one_at_char2int_02(n)*16)+(one_at_char2int_02(m)) mmm="" poke mmm,0,mm return mmm #global /* 以下TESTコード。コメントアウト // int2charのTEST repeat 30,-10 logmes ""+str(one_at_int2char_02(cnt)) loop repeat 300,-10 logmes ""+some_at_int2char_02(cnt) loop logmes "" logmes ""+some_at_int2char_02('a') logmes ""+some_at_int2char_02('b') logmes ""+some_at_int2char_02('c') logmes ""+some_at_int2char_02('d') logmes ""+some_at_int2char_02('e') logmes ""+some_at_int2char_02('#') logmes ""+some_at_int2char_02('$') logmes ""+some_at_int2char_02('?') logmes ""+some_at_int2char_02('\\') // char2intのTEST s="abcde" logmes str(one_at_char2int_02(s)) s="ab" logmes str(one_at_char2int_02(s)) s="a" logmes str(one_at_char2int_02(s)) s="" logmes str(one_at_char2int_02(s)) s="abcde" logmes str(some_at_char2int_02(s)) s="ab" logmes str(some_at_char2int_02(s)) s="a" logmes str(some_at_char2int_02(s)) s="" logmes str(some_at_char2int_02(s)) ss="ABCabcdefghi0123456789|%$" l=strlen(ss) repeat l t=strmid(ss,cnt,1) logmes str(one_at_char2int_02(t)) loop t="" repeat 300,-10 t=some_at_int2char_02(cnt) logmes str(some_at_char2int_02(t)) loop logmes "" t=some_at_int2char_02('a') logmes str(some_at_char2int_02(t)) t=some_at_int2char_02('b') logmes str(some_at_char2int_02(t)) t=some_at_int2char_02('c') logmes str(some_at_char2int_02(t)) t=some_at_int2char_02('d') logmes str(some_at_char2int_02(t)) t=some_at_int2char_02('e') logmes str(some_at_char2int_02(t)) t=some_at_int2char_02('3') logmes str(some_at_char2int_02(t)) t=some_at_int2char_02('$') logmes str(some_at_char2int_02(t)) t=some_at_int2char_02('?') logmes str(some_at_char2int_02(t)) t=some_at_int2char_02('\\') logmes str(some_at_char2int_02(t))*/ |