バイナリデータの16進エンコードの目的は何ですか?
-
06-07-2019 - |
質問
base64で16進エンコードを使用する理由について少し興味があります。 base 64の方が効率的だと思います。特に、データベースが常に16進エンコーディングを使用しているように見えるのはなぜですか?それは歴史的な問題ですか、それとも16進エンコーディングに関する何かが欠けていますか?
解決
画面から BASE64
を読むには、本物のオタクでなければなりません。
Oracle
で HEXTORAW
を実行すると、 RAW
フィールドの内容をある程度理解できますが、 BASE64
。
同様に、多くの 0x3F
を見ると、エンコードに何かがあることがわかります。
内部では、これらは単なるバイナリバイトです。エンコードする必要はありませんが、画面の反対側にいる人に見せるためです。
他のヒント
これは、効率的なスペース使用と読みやすさの間の良い妥協点です。ビットパターンは16進数で非常に明確になりますが、他のベースはそれほど明確ではありません。
読みやすい、0x8080または32896? 16進数の値は次のとおりです。
また、各16進数字がニブルに等しい(したがって、各ペアがバイトに等しい)niceプロパティもあります。
ベース64よりも頭の中で16進数を理解する方がはるかに簡単です。
データベースに関しては、データの表示方法と保存方法に違いがあることに注意してください。ほとんどの場合、単にデータを16進数として表示しています。
base64は大文字と小文字の両方を使用するため、Windowsでファイル名として結果の値を使用する場合、Base64は機能しません。同様の理由で使用できない場合もあると思います。
読みやすさに関する他の回答に同意します-16進数は8ビットバイトにうまく整列しますが、base64" digits"しないでください。1桁に2バイトの部分を含めることができます。
文字列ストレージ(「潜在的に」XMLセーフエンコーディングを使用)の場合、ASCII 85はbase64の4/3ではなく5/4の膨張であるため、さらに効率を上げることができます。
しかし、「読む」ことはさらに困難です。次にbase64。また、多くのアプリケーションでサポートされていないため、エンコードとデコードを行うために独自のクラス/関数を作成する必要が頻繁にあります。
データベースが実際にデータをバイナリとして保存していると思いますが、クエリエディタは16進エンコーディングを使用して表示します。これは、SQL Server Query Analyzerが行うことです。
それは個人的な好みの問題だと思います... HexはBase32またはBase64の何かを読むよりもはるかに簡単です