Python バイト列 バイナリ列

Python学習【365日チャレンジ!】234日目のマスターU(@Udemy11)です。

そろそろ新しいiPhoneが発売される模様ですが、年のせいかあまり興味がわかないんですよね。

今持っているiPhoneXで困ることはないし、新しく購入するにはそれなりの出費が必要になります。

今は「最新のiPhone買うなら、ステラ(シマノのフラッグシップモデルのリール)買うよ。」というくらい、釣りにはまってしまっています。

ただiPhoneXに関して、不満点がないかというとそうでもなくて、格安SIMの楽天モバイルを使っているので、4Gだと速度が遅いんですよね。

楽天5Gがドコモやauやソフトバンクに比べて半額程度で提供するらしいので、5G対応のiPhoneが気にならない分けでもないんですけど。。。

とりあえずiPhoneXの動作が遅すぎてやってられん!という状況になったら、新しいiPhoneを購入したいと思います。

それでは、今日もPython学習をはじめましょう。

昨日の復習

昨日は、文字コードのShift-JISとUnicode、UTF-8について学習しました。

ASCIIコードには日本語が対応していないので、日本語を対応させたのがShift-JISでした。

Unicodeは、世界中の言語をコードに置き換えただけの符号化文字集合規格なので、この規格をパソコンがわかるようにする文字符号化方式が必要で、それがUTF-8などの文字コードでした。

詳細については、昨日の記事を参考にしてください。

今日は、バイト列、バイナリ列、Base64について学習します。

バイト列

バイトというと、コンビニなどで働くバイトのことが思い浮かびますが、データの単位であるbyteのことで、バイト列はバイト配列とも呼ばれます。

ネットでバイト列を調べてみるとこんな解説がありました。

バイト列とは

バイト列とは、文字や数値といった特定の形式や意味が与えられていない、任意のビットパターンからなる1バイトのデータが並んだデータ集合のこと。

1byte(8bit)のデータが並んだ集合ということで、単位がbyteで処理されるデータということです。

バイナリ列とは

バイナリ列は、01が並んだデータの連なりのことで、bit単位で処理するものです。

バイト列と同じようにバイナリ列もネットで調べてみましたがいまいちピンとくるものがなかったので、バイナリについて調べました。

バイナリとは

解説よりも引用元のサイト名のほうが長いのが笑えますが、こちらのサイトは、わかりにくいことをわかりやすく解説してくれているので、いつもお世話になっています。

要するに、2進数で表されたデータのことがバイナリデータなので、1bit単位で認識するデータ列のことがバイナリ列といえます。

同じデータでも、bit単位で考えるとバイナリ列で、byte単位で考えるとバイト列ということです。

例えば、昨日学習した文字コードのをUTF-8で2進数にしたデータで考えてみるとバイナリ列なら0b111000111000000110000010で、バイト列なら0b11100011 0b10000001 0b10000010という感じです。

なので、バイト列は、バイナリ列にもなりうるわけです。

Base64

Base64はその名のとおり、64種類の文字しか使わない環境で使い、7bitのASCIIコードだけを使用した電子メールで、バイナリデータを送受信するための規格で、データ変換方式の一つです。

今回は、現在学習中の酒井さんのレクチャーから引用しました。

Base64とは

Base64は、データを64種類の印字可能な英数字のみを使い、それ以外の文字を扱うことのできない通信環境において、マルチバイト文字やバイナリデータを扱うためのエンコード方式

写真などのデータをBase64にエンコードして文字情報で添付ファイルとして送って、受信側は受け取った文字情報をデコードして写真のデータに戻すという作業で使われています。

エンコードにデコード

文字コードにエンコードしたりデコードしたりという言葉は以前から聞いたことがありましたが、なんとなくわかったつもりでいただけなので、今回の暗号化復号化の基本的な学習で、ある程度理解することができました。

ほんとこれまではわかったつもりでいただけなので、かなり理解が進んだような気がします。

そんなわかったようなわかっていないようなプログラミング知識の理解がすすむ酒井さんのPython講座がこちら

Udemy講師 酒井さん プログラミング Python

ぜひ、なんとなくわかっていることを確実にわかった状態にしてくれる酒井さんの講座を受講してみてください。

それでは明日もGood Python!