URLCompressorライブラリ(2)

このページをスマホなどでご覧になる場合は、画面を横長にする方が読みやすくなります。
目次へ  前のページへ (1) (2) (3) 次のページへ
2021年06月28日 公開。

5.URLCompressorライブラリを使ったエンコード・デコードを試すためのツール

下のツールを使う事で、URLCompressorライブラリを使ったエンコードとデコードを試すことができます。また、このツールでは、パーセントエンコーディングBase 64 URLによるエンコード・デコードもできますので、これらのエンコード法とURLCompressorライブラリの比較をすることができます。

このツールの使い方は、ツールの下に記載しています。

5-1.エンコードの方法

元の文字列の欄に、エンコードしたい文字列を入力し、エンコードボタンをクリックしてください。URLCompressorパーセントエンコーディングBase 64 URLの各欄に、それぞれの方法でエンコードされた文字列が表示されます。

5-2.デコードの方法

このツールでは、エンコードした文字列から、逆に元の文字列を求める事(デコード)もできます。デコードするには、URLCompresorパーセントエンコーディングBase 64 URLのいずれかの欄に、その欄に応じたエンコード方式でエンコードした文字列を入力し、デコードボタンをクリックしてください。元の文字列の欄にデコード結果が表示されるとともに、入力したエンコード方式以外のエンコード方法で再エンコードした結果も、それぞれの欄に表示されます。

5-3.元の文字列のバイト数について

元の文字列の欄の下に表示されるバイト数は、文字列をUTF-8で表現した場合のバイト数を表しています。漢字やカナは通常、1文字当たり3バイトに換算されます。(サロゲートペアになる文字や結合文字を使う場合は除く)

6.URLCompressorライブラリの応用例

筆者は、Syn BASICという、オンラインで使えるBASICインタプリタを開発しているのですが、URLCompressorライブラリは、Syn BASICで作ったプログラムのリストを、URLパラメータとしてURLの中に埋め込んで、Twitterでツイートするために開発しました。

次のツイートの中のリンクをクリックすると、Syn BASICのページが開き、実際にBASICのプログラムが実行されます。

"電光掲示板"を作るつもりなのだが、"電光掲"までできた。がんばれ自分。(リンクのクリックで、電光掲示板のプログラムを実行できます。)

10 size=54
20 dim shift(15),bmp(size)
30 s=1
40 for i=0 to 15
50 shift(i)=s
60 s=s*2
70 next
80 gosub *set_data
90 *loop…https://t.co/tjRu3iF8XO pic.twitter.com/rshc9pfwvX

— しなぷす@synapse.kyoto (@h164tan1) June 25, 2021

上のツイートのリンクに埋め込んであるのは、リスト1に示すBASICプログラムです。

リスト1、上のツイートのリンクに含まれているBASICプログラム
10 size=54
20 dim shift(15),bmp(size)
30 s=1
40 for i=0 to 15
50 shift(i)=s
60 s=s*2
70 next
80 gosub *set_data
90 *loop
100 for i=0 to size
110   for j=15 to 0 step -1
120     if bmp(i) and shift(j) then print "●"; else print " ";
130   next
140   print
150   wait 50
160 next
180 goto *loop
200 *set_data
210 bmp( 0)=&h0000
220 bmp( 1)=&h3ffc
230 bmp( 2)=&h0080
240 bmp( 3)=&h7ffe
250 bmp( 4)=&h4082
260 bmp( 5)=&h5efa
270 bmp( 6)=&h4082
280 bmp( 7)=&h1ef8
290 bmp( 8)=&h0000
300 bmp( 9)=&h1ff8
310 bmp(10)=&h1088
320 bmp(11)=&h1ff8
330 bmp(12)=&h1088
340 bmp(13)=&h1ff9
350 bmp(14)=&h0081
360 bmp(15)=&h007f
370 bmp(16)=&h0080
380 bmp(17)=&h0080
390 bmp(18)=&h0888
400 bmp(19)=&h0488
410 bmp(20)=&h0490
420 bmp(21)=&h04a0
430 bmp(22)=&h0080
440 bmp(23)=&h7fff
450 bmp(24)=&h0120
460 bmp(25)=&h0120
470 bmp(26)=&h0120
480 bmp(27)=&h0220
490 bmp(28)=&h0220
500 bmp(29)=&h0421
510 bmp(30)=&h0811
520 bmp(31)=&h300f
530 bmp(32)=&h1000
540 bmp(33)=&h11f8
550 bmp(34)=&h1108
560 bmp(35)=&h11f8
570 bmp(36)=&h7d08
580 bmp(37)=&h1108
590 bmp(38)=&h11f8
600 bmp(39)=&h1080
610 bmp(40)=&h1cfe
620 bmp(41)=&h7102
630 bmp(42)=&h1332
640 bmp(43)=&h15c2
650 bmp(44)=&h1102
660 bmp(45)=&h1112
670 bmp(46)=&h10f2
680 bmp(47)=&h300c
690 return

リスト1のプログラムリストをURLCompressorライブラリでエンコードすると、リスト2の様になります。

リスト2、リスト1をURLCompressorで圧縮した結果
Hd7eoe0qExhZAwoWJynctOuVyI-4L_WGU534sgJp9D5G-NuuWTYFQM8FEpBTApmXWYAxkrX264hHBSuFJpe5kcCAJ67la0oHokiqpSqSBiJnRdqzx82IhYKsfFK1C3RHRzEGzykvGr7iozdR3DFq1GKOTG0egxzzmAS8RTl3Nr5q8YN9ygpLSGEGbu6OArclKuqtbdsccq1gcRgZ-RIx_wa-MJ3M-XlAVjuaOxf3DzazjsvR2KFiIHXoaD9q9PtX5NjebVNNDAgYd_VxLgDWrqCOEvhhI7-lrbC3nBuEhnYlR3iVZ4ThKKjCR-aV-urP6cJQkYSDmgWpy0InCRSMJFX8s4rqicJNZTEp1CXCVImEgvyLlh6-XCQslpc0NcBwk8BxLMYlNANelDr0qmxgkAy9wOXosJQGXuBy9FhKAy9rcvfCUClvDL2ty9843lnDL35D3BJFODMMvX3L3dCRcMvX3L3sEsMvX7L1yxxDwZetOXqA8YJQZe4rXt1OjUIMvXzl6dARYJQZesk17Cgy9ZDr3veQZeorL25k3kGXpay9nBKDL0tZezgkhl6JsvXfy3IhsEmy9TBIlDL0CGXoLoVDL0RsvY6cEkMvetxyY26AQy96hr27j-Qy962vdO0PUMvbrl6-euCSGXtly9bCVDL2y5elbyYSoZenbjlcHCGL064vVwcFyGL0jaOUyhFyGL3raORk6vjiGL3q4vUtNRaQDF7gsXrGGBIDF7MsXuXMwJAYvYA4vTAkBi9gBi9owJAYvXDi9pmjAkBi9aOL0yX7M_MXryq61HmB

この圧縮結果をURLパラメータとして埋め込む事により、次のようなURLを生成しました。

リスト3、リスト2の圧縮結果をURLパラメータに埋め込んで生成したURL
https://synapse.kyoto/tool/SynBasic/?cmp1=Hd7eoe0qExhZAwoWJynctOuVyI-4L_WGU534sgJp9D5G-NuuWTYFQM8FEpBTApmXWYAxkrX264hHBSuFJpe5kcCAJ67la0oHokiqpSqSBiJnRdqzx82IhYKsfFK1C3RHRzEGzykvGr7iozdR3DFq1GKOTG0egxzzmAS8RTl3Nr5q8YN9ygpLSGEGbu6OArclKuqtbdsccq1gcRgZ-RIx_wa-MJ3M-XlAVjuaOxf3DzazjsvR2KFiIHXoaD9q9PtX5NjebVNNDAgYd_VxLgDWrqCOEvhhI7-lrbC3nBuEhnYlR3iVZ4ThKKjCR-aV-urP6cJQkYSDmgWpy0InCRSMJFX8s4rqicJNZTEp1CXCVImEgvyLlh6-XCQslpc0NcBwk8BxLMYlNANelDr0qmxgkAy9wOXosJQGXuBy9FhKAy9rcvfCUClvDL2ty9843lnDL35D3BJFODMMvX3L3dCRcMvX3L3sEsMvX7L1yxxDwZetOXqA8YJQZe4rXt1OjUIMvXzl6dARYJQZesk17Cgy9ZDr3veQZeorL25k3kGXpay9nBKDL0tZezgkhl6JsvXfy3IhsEmy9TBIlDL0CGXoLoVDL0RsvY6cEkMvetxyY26AQy96hr27j-Qy962vdO0PUMvbrl6-euCSGXtly9bCVDL2y5elbyYSoZenbjlcHCGL064vVwcFyGL0jaOUyhFyGL3raORk6vjiGL3q4vUtNRaQDF7gsXrGGBIDF7MsXuXMwJAYvYA4vTAkBi9gBi9owJAYvXDi9pmjAkBi9aOL0yX7M_MXryq61HmB#MainFrame

この例では、元々1233バイトあったBASICプログラムが、804バイトに圧縮できました。ちなみに、パーセントエンコーディングすると1597バイト、Base 64 URLでは1644バイトになります。

次のページでは、URLCompressorライブラリの使い方について説明します。

目次へ  前のページへ (1) (2) (3) 次のページへ

関連ページ

Arduino 電子工作
このサイトの記事が本になりました。
書名:Arduino 電子工作
ISBN:978-4-7775-1941-5
工学社の書籍の内容の紹介ページ
本のカバーの写真か書名をクリックすると、Amazonの書籍購入ページに移動します。
こちらのページもおすすめです。