超Flash Lite入門 ActionScript編 その3 ビット変換
前回のエントリーで説明させて頂いたとおり、Flash Lite 1.1で使われているAction Script 1.1ではビット演算が使えないので文字列からビット変換をするのは割と大変です。
あまり使う機会はないかと思いますが、以下サンプルになります。
map = "0000111" add "0100100" add "0010110" add "0000000" add "1101100" add "1000011" add "1111111"; bmap="\x80\x80\x80\x80\x80\x80\x80"; l=length(map)+2; for(i=1;i<l;i++){ //bit変換 if(substring(map,i,1)){ idx = int((i-1) / 7)+1; c= ord(substring(bmap,idx,1)); tmp = c; tmp2 = 1; bit = (i-1)%7+1; for(j=1;j<bit;j++){ tmp=int(tmp/2); tmp2*=2; } if(!(tmp%2)) c+=tmp2; if(c > 127) c-=128; bmap = substring(bmap,1,idx-1) add mbchr(c) add substring(bmap,idx+1,7-idx); } } // 検証 map=""; for(y=1;y<8;y++){ for(x=1;x<8;x++){ b = ord(substring(bmap,y,1)); for(j=1;j<x;j++){ b=int(b/2); } map = map add (b%2); } trace(map); map=""; }
0000111 0100100 0010110 0000000 1101100 1000011 1111111