ブロックリスト自動生成(番外)

前回のPythonプログラムの補足説明というか、WEBページで図を使って説明するための練習の様な投稿になります。WEBで表示出来るオブジェクトとしては通常段落と画像が主なものになりますが、画像はビットマップ形式が多く説明用の図には向かないかなと思っていたが、よくよく調べるとHTML5からベクタ図形の表示が出来るようになってるんですね。ほうほう。

ということで、SVGについて少し勉強してみることにした。中身はjavascriptのようで、WEBに貼付けるときは普通に画像扱いで良いとか。作成用のツールはInkscapeというフリーソフトがあるので早速インストールして使用してみた。

illustratorとかと同じように使えそうなスグレモノだけど、あいにく自分はillustrator系は使い慣れていないので、一から勉強するよりは、既存のドローソフトで簡単に描いたものをSVGに変換して貰うだけでも便利そうだ。

簡単なものならWMF(ウィンドウズメタファイル)、EMF(拡張メタファイル)も読み込めるのでBschとかで描いた回路図も変換出来そう。

ということで前回のPythonネタの続き

msks = list(map(lambda n: int('1'*n+'0'*(8-n), 2), [8 if (mask - i*8) >= 8 else (mask - i*8) if (mask - i*8) > 0 else 0 for i in range(4)]))

これは、整数値のネットマスク幅を、IPアドレスリストと同じ形式のマスクビット配列に変換する1文となる。(例えば23 → 11111111.11111111.11111110.00000000

[8 if (mask - i*8) >= 8 else (mask - i*8) if (mask - i*8) > 0 else 0 for i in range(4)]

これが1から32までの数字mskに対して、8ビットずつ4分割し、足りない分は余りと、ゼロとする構文。mskを8で割って、配列の上から「商」の数だけ8として、次に「余り」残りをゼロとする。

map(lambda n: int('1'*n+'0'*(8-n), 2), LIST)

上記配列の要素に対し上位を1で埋めたビット表記に変換して、2進数で数値化

例)7 → 11111110 → 0xFE

これを図で説明すると下図の様になる

なんか余計に分かりにくくなったような。まぁ今回は自分で思い出せれば良いか~くらいのつもりでまとめておきます。今後のツール活用に期待で。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

*

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)