情報
作者名:Craving研究家
概要
URLエンコードの仕組みです。
サンプルプログラム
「Hello World! = 世界よ、こんにちは! <>"{}|\^[]`#%;/?:@&=+$,」をURLエンコードB
それを表示
それをURLデコードB
それを表示
本体
●URLエンコードB(Sを)
結果とは文字列;対象とは文字列
Iで1から(Sのバイト数)まで繰り返す
対象=MIDB(S,I,1)
もし、対象が「[^a-zA-Z0-9_\-\.]」に正規表現一致ならば
対象="%"&(ASC(対象)を10から16進数変換)
対象を結果に追加
結果=結果の「%20」を「+」に置換// 空白は"+"に置換
結果で戻る
●URLデコードB(Sを)
結果とは文字列
Iとは整数=1;対象とは文字列
S=Sの「+」を「%20」に置換// 空白に戻す
(I<=(Sのバイト数))の間
対象=MIDB(S,I,1)
もし、対象="%"ならば
対象=CHR(INT(「${MIDB(S,I+1,2)}」))
I=I+2
対象を結果に追加
I=I+1
結果で戻る
#--------------------------
#進数変換(五十六さん作 ありがとうございます)改造 ここから
#--------------------------
●十進数(SをVで)
IでASC("a")からASC("z")まで繰り返す
S=SのCHR(I)をCHR(I+ASC("A")-ASC("a"))に置換
S=(Sを文字列分解)を配列逆順
IでASC("A")からASC("Z")まで繰り返す
S=SのCHR(I)を(I-ASC("A")+$A)に置換
結果とは整数
Sで反復
結果=結果+対象*(V^(回数-1))
結果で戻る
●進数(SをV|SのV|SでV)
結果とは配列;Cとは数値
(S>=V)の間
C=S%V
Iで10から35まで繰り返す
C=CのIをCHR(I+ASC(A)-$A)に単置換
結果にCを配列追加
S=INT(S/V)
Iで10から35まで繰り返す
S=SのIをCHR(I+ASC(A)-$A)に単置換
結果にSを配列追加
結果を配列逆順
(結果を空で配列結合)で戻る
[[●進数変換]](Sを{=10}AからB)~(SをAで十進数)の(B)進数で戻る
#--------------------------
# 進数変換ここまで
#--------------------------
総合: -
今日: - 人
昨日: - 人
最終更新:2012年02月07日 07:40