| > UnicodeをUTF-8やUTF-16に変換する方法
> https://qiita.com/yasushi-jp/items/b006f7170ef3a86de09f
桐9 の途中で、次の bit演算子は
使えるようになったけど
#AND(num1,num2)
#NOT(num)
#OR(num1,num2)
#LSHIFT(num,x)
#RSHIFT(num,x)
#XOR(num1,num2)
bit の文字列に変換するような
関数は無かったはず。
昔、次のようなのを必要に応じて
作ったけど。
/* ========================================================= BIT 演算 === */
proc toBITSTR(長整数 &bitnum, 参照 文字列 &bitstr)
/* 数値(10進数)を 16bit の BITSTR に変換する */
変数宣言 整数{&bitflg}
&bitstr=""
for &bitflg=15,0,-1
&bitstr=&bitstr+#str(#int(&bitnum/2^&bitflg))
&bitnum=&bitnum-#int(&bitnum/2^&bitflg)*2^&bitflg
end
end
/* ---------------------------------------------------------------------- */
proc toBITNUM(文字列 &bitstr, 参照 長整数 &bitnum)
/* 16bit の BITSTR(16bit) を数値(10進数)に変換する */
変数宣言 整数{&bitflg}
&bitnum=0
for &bitflg=1,16
&bitnum=&bitnum+#num(#sstr(&bitstr,&bitflg,1))*2^(16-&bitflg)
end
end
/* ---------------------------------------------------------------------- */
proc notBIT(文字列 &bitstr, 参照 文字列 ¬bitstr)
/* 16bit の BITSTR(16bit) の NOT をとる */
変数宣言 整数{&bitflg}
¬bitstr=""
for &bitflg=1,16
¬bitstr=¬bitstr \
+#str(.not#num(#sstr(&bitstr,&bitflg,1)))
end
end
/* ---------------------------------------------------------------------- */
proc andBIT(文字列 &bitstr1, 文字列 &bitstr2, 参照 文字列 &bitstr)
/* 16bit の BITSTR(16bit) 同士の AND をとる */
変数宣言 整数{&bitflg}
&bitstr=""
for &bitflg=1,16
&bitstr=&bitstr \
+#str(( #num(#sstr(&bitstr1,&bitflg,1)) \
.and #num(#sstr(&bitstr2,&bitflg,1))))
end
end
/* ---------------------------------------------------------------------- */
proc orBIT(文字列 &bitstr1, 文字列 &bitstr2, 参照 文字列 &bitstr)
/* 16bit の BITSTR(16bit) 同士の OR をとる */
変数宣言 整数{&bitflg}
&bitstr=""
for &bitflg=1,16
&bitstr=&bitstr \
+#str(( #num(#sstr(&bitstr1,&bitflg,1)) \
.or #num(#sstr(&bitstr2,&bitflg,1))))
end
end
/* ---------------------------------------------------------------------- */
proc xorBIT(文字列 &bitstr1, 文字列 &bitstr2, 参照 文字列 &bitstr)
/* 16bit の BITSTR(16bit) 同士の XOR をとる */
変数宣言 整数{&bitflg}
&bitstr=""
for &bitflg=1,16
&bitstr=&bitstr \
+#str(.not(#sstr(&bitstr1,&bitflg,1) \
=#sstr(&bitstr2,&bitflg,1)))
end
end
/* ================================================== end of BIT 演算 === */
|