質問: 非常に基本的な質問で大変恐縮なのですが... 以下のページを読んでる際に (Python における) バイナリとは何か、ということがよくわからなくなりました。 7.1. struct — Interpret bytes as packed binary data 基本的な質問は以下の通りです。 前提として「全てのデータはバイナリのはずなのに、なぜ他のデータ型と分けて『バイナリ』だけ切り出して扱うことがあるのか」という疑問が根底にあります。 1. 「バイト文字列」と「バイナリ」は同一の内容を指すか 2. 「バイナリデータ」の対義語は「テキストデータ」か 3. 例えば、同じ 0 を指す時に「バイナリ」と「整数型」で扱う/表現する時の違いは何か 4. どのタイミングでバイナリとして扱う必要性/メリットがあるのか 以下のページには下記の通り記載があり、バイト文字列と他のデータ型を分けて扱っているため、両者は異なるものだと理解しています。 > > struct モジュールはバイト文字列と、数値や文字列といったネイティブの Python データ型を変換する関数を提供します。 > > > PyMOTW > struct – バイナリデータを扱う 以下の記事から推測するに、具体的には、バイナリと整数型では、例えば、符号情報など、整数の取扱いに特化した機構が整数型には備わっているのではないかと推測しています。 > > バイナリ形式で書かれたファイルから,データを読みたい時があります.asciiではデータサイズが大きくなりすぎることが有りますので.... > > > バイナリの取り扱い 以下のコメントが恐らく正しいのですが、それでは逆に他のデータ型 (int など) は何がバイナリとは異なるのか、どのような付加情報が追加されているのか、というのがわからなくなりました。 > > つまり,その内容が実際には文字であったとしても,データ形式に立ち入らずに単なるビットパターンとして処理すればそれはバイナリ列だと説明しています。 > > > バイナリファイルとバイナリ文字列の違い また、それとは別にバイナリデータとテキストデータという対比もあり、それがあることもうなずけ、今回の文脈と同一なのか悩んでいます。 バイナリデータとテキストデータ 特に整数型や文字列型の仕様や、基本的なバイナリ周りの理解などは、コンピュータ サイエンスの基本中の基本だと思いますので、聞くこと自体が恥ずかしいことは承知の上なのですが、どなたかご指導いただけますと幸いです...。 特に仕様面を説明しているリンクなどもあれば嬉しいですが、まずは冒頭の疑問解消を優先できればと思ってます。
回答: 仕様とか確認してないので、一部、不確かな情報となりますが、、。 まず、文字データ、 以前、(昔々、、) 文字データと言えば、8bitのデータ。 (もっと古くは、7bit, 6bitとかもあったらしい) それに対し、今は、Unicodeが主流となっているので、 UTF-8 は、8bit単位の不定長。UTF-16は、16bit単位(細かい突込みは無し)。 と言うように、サイズもバラバラ。相互変換も適当に行われているため、単なる文字データと言った時点で、中身がなんであるかは不明。(文字コードに関する情報を持っていたか?) それに対し、バイナリデータは、中身がバイナリである事以外は約束してないという事です。 まず、この辺からかと思います。