※ ChatGPTを利用し、要約された質問です(原文:Base64でエンコードした後の文字列が思った通りになりません。)
Base64でエンコードした文字列の正確な出力結果を比較するポイント
このQ&Aのポイント
Base64でエンコードした後の文字列に違いがある理由を解説します。
C言語とPHPでBase64エンコードの結果が異なる場合の原因を説明します。
Base64エンコードの形式による文字列の違いについて詳しく説明します。
Base64でエンコードした後の文字列が思った通りになりません。
Base64でエンコードした後の文字列が思った通りになりません。
C言語とPHPの双方で、
ファイルをBase64でエンコード・デコードしたいと考えています。
PHPにはbase64_encode関数がありますのでこれを利用しますが、
C言語には無いようなので関数を自作することにしました。
以下を参考に、fopen関数を使用して画像をバイナリ形式で読み込み、
エンコードすると以下の文字列が出力されました。
http://www.dokidoki.ne.jp/home2/usui/itmemo/020.html
/9j/4AAQSkZJRgABAgAAZABkAAD/7AARRHVja3kAAQAEAAAAPAAA/+4ADkFkb2JlAGTAAAAAAf/bAIQABgQEBAUEBgUFBgkGBQYJCwgGBggLDAoKCwoKDBAMDAwMDAwQDA4PEA8ODBMTFBQTExwbGxscHx8fHx8fHx8fHwEHBwcNDA0YEBAYGhURFRofHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8f/8AAEQgABgAHAwERAAIRAQMRAf/EAFMAAQAAAAAAAAAAAAAAAAAAAAYBAQAAAAAAAAAAAAAAAAAAAAAQAAIDAAIDAAAAAAAAAAAAAAIEAQMFFAYAEhMRAQAAAAAAAAAAAAAAAAAAAAD/2gAMAwEAAhEDEQA/AGiejln2xpJzNeq6DVyCwNJWNrnWafxQlgaSoaNuXJI3IYgVgtH0YkjIic8D/9k=
しかし、PHPのbase64_encode関数で同様の画像をエンコードすると、
以下の文字列が出力されました。
<?php
$data = base64_encode("\xFF\xD9\xFF\xD8".file_get_contents('sample.jpg'));
echo $data;
?>
/9n/2P/Y/+AAEEpGSUYAAQIAAGQAZAAA/+wAEUR1Y2t5AAEABAAAADwAAP/uAA5BZG9iZQBkwAAAAAH/2wCEAAYEBAQFBAYFBQYJBgUGCQsIBgYICwwKCgsKCgwQDAwMDAwMEAwODxAPDgwTExQUExMcGxsbHB8fHx8fHx8fHx8BBwcHDQwNGBAQGBoVERUaHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fH//AABEIAAYABwMBEQACEQEDEQH/xABTAAEAAAAAAAAAAAAAAAAAAAAGAQEAAAAAAAAAAAAAAAAAAAAAEAACAwACAwAAAAAAAAAAAAACBAEDBRQGABITEQEAAAAAAAAAAAAAAAAAAAAA/9oADAMBAAIRAxEAPwBono5Z9saSczXqug1cgsDSVja51mn8UJYGkqGjblySNyGIFYLR9GJIyInPA//Z
どう見ても双方の結果が異なってしまうのですが、原因がわかりません・・・。
何か形式が異なるのでしょうか?
もし原因がお分かりになる方がいらっしゃれば、教えていただければ助かります。
よろしくお願いします。
お礼
ご回答ありがとうございます。 仰るとおりでした・・・! そのままコピーしてきたものを使用していたために、 そしてC言語の方ばかりを見ていたために気づかなかったです(汗) ご指摘いただいた文字列を取り除いたところ、一致しました。 ありがとうございました。