私は人がバイナリデータをどのように表しているのか、それがネットワークを通ってどのように送られるのかちょっと混乱します。私はWikipediaの例を通して説明します。 < - https://imgur.com/a/POELH - >私はバイナリデータをベース64としてエンコードしており、TWFUというテキストを送信しています。だから私はTをW、その後F、そして最後にUを送っています。しかし、T、charを送る。私はいつも言われたように、それを送るのに1バイト必要です。ネットワークを介して送信される1文字は1バイトです。エンコードされたデータはどのようにネットワーク経由で送信されますか?
私は24バイトをエンコードすると4文字以上を送信しますが、4文字を送信するには文字と同じバイト数が必要だと思っています。
上記の例では、ネットワーク上で"Man" (unencoded) (Requiring 3 bytes normally)
と"TWFu" (encoded) (requiring 4 bytes normally)
を送信する場合、ネットワークを介して送信される同じビットシーケンスが同じですか。データを送信するためにソケットを使用した最後の時間で、文字列入力を要求し、テキスト+エンコーディング入力を要求しません。
それで、私はネットワーク "TWFu"を送信すると言っていますが、これには4バイトが必要です。一度それはネットワーク上では、人はそれをデコード?私は、より多くの文字を必要とするものをエンコードすることのポイントを見逃すだけです。この例では、ネットワーク経由で「Man」を送信でき、3バイト必要です。しかし、それは4バイトを必要とする "TWFu"にエンコードします。私はこの点を見ません。ネットワークを介して送信されると、その人はそれをデコードしていて、多くのバイトは無視されますか? 'https:// en.wikipedia.org/wiki/Base64'最初の例をここから読んでください。 –
通常、7ビットASCIIはエンコードしませんが、レガシーシステムと互換性のあるバイナリコンテンツには使用します。一例として、電子メールは添付ファイルとしてBase64を使用して、電子メール自体が単純なプレーンテキストであり、容易に処理されるようにします。デコードは受信者の責任であり、通常は問題のプロトコルまたは標準によって規定されます。バイトは「無視」されませんが、この印象をどこで得ているのか分かりません。 – tadman
ここで重要なことは、テキストモードプロトコルには多くのものがあり、一般的にはASCII規格に従って7ビットエンコーディングが必要であるということです。最近のテキストベースのエンコーディング(例:JSON)ではUTF-8を使用していますが、これは8ビットですが、UTF-8ではマルチバイト文字の意味が最も高いため、任意のバイナリデータを含むことはできません。 Base64は6ビットのエンコーディングであり、ASCII規格のプレーンテキスト文字の大半*を利用するのは非常にうまく機能します。 0〜31は、改行などの特別な意味を持つ「制御文字」として予約されています。 – tadman