純粋な SQLite 言語を使用して、16 進数データを表す文字列から 16 進数データのテキスト エンコーディング (ASCII、UTF-8 など) に変換しようとしています。基本的に、X'[hex]'
構文の機能が必要ですが、プログラムで派生した 16 進文字列に適用されます。
たとえば、select X(hex_data_string) from ...
正当な SQLite 構文ではない が必要です。
明らかに、上記のスニペットでは、データが有効なテキスト エンコーディングでない場合、必ずしもデータを出力できるとは限りません。つまり、hex_data_string
制御文字などが含まれている場合X()
、 は何らかの形で失敗するはずです。これが可能であれば、デフォルトの文字エンコーディングが存在するか、目的の文字エンコーディングを何らかの方法で指定する必要があります。
SQLite データベースから 16 進データ文字列値を取得し、C またはその他の機能を使用してそれを変換する方法について質問しているわけではありません。バイナリ データを表す 16 進文字のテキスト表現を返すクエリがあるため、純粋な SQLite でこの変換を実行しようとしています。バイナリ データのほとんどは ASCII であるため、必要に応じてクエリ出力でバイナリ データの内容をすばやく表示できるようにしたいと考えています。
直感的に、これは 16 進データ文字列をブロブにキャストして使用することで実現できると考えましたhex()
が、それでも 16 進データ文字列が返されます。
何か案は?
可能な重複: