CoderTools

Base64エンコーダ/デコーダ

テキストやファイルの変換をサポートし、Base64文字列を素早くエンコード/デコード

文字セット

Base64とは?

Base64は、64個の印刷可能なASCII文字を使用してバイナリデータを表現するエンコーディング方式です。これらの文字には大文字・小文字、数字、いくつかの特殊記号が含まれます。Base64は、バイナリデータをテキストのみのチャネルで送信する必要がある場面で広く使用されています。たとえば、電子メールの添付ファイルやURLパラメータなどです。Base64エンコーディング方式は、RFC 4648MIME仕様(RFC 2045)で元々定義されました。

Base64エンコーディングアルゴリズムの原理:

Base64エンコーディングプロセスは以下のステップに分けることができます:

  1. 入力データを3バイトずつのグループに分割
  2. これらの3バイト(24ビット)を6ビットずつの4つのグループに再編成
  3. 各6ビット値(範囲0-63)をBase64文字セットのインデックスとしてマッピング
  4. 最後のグループが3バイト未満の場合、0ビットで埋めて結果の最後に対応する数の等号(=)をパディングとして追加

Base64文字セット: A-Z, a-z, 0-9, +, /

パディング文字: =

変換例:

テキスト「Man」のASCIIコード: 77 97 110
バイナリ表現: 01001101 01100001 01101110
6ビットに再グループ化: 010011 010110 000101 101110
10進値: 19 22 5 46
Base64結果: T W F u

簡略化されたJavaScript実装:

// Base64 encoding implementation example (simplified)
function base64Encode(str) {
    // Base64 character set
    const base64chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/';
    let result = '';
    let i = 0;

    // Process every 3 characters as a group
    while (i < str.length) {
        const char1 = str.charCodeAt(i++);
        const char2 = i < str.length ? str.charCodeAt(i++) : 0;
        const char3 = i < str.length ? str.charCodeAt(i++) : 0;
        
        // Convert 3 8-bit bytes into 4 6-bit indices
        const triplet = (char1 << 16) + (char2 << 8) + char3;
        
        // Extract 4 6-bit values from the triplet
        const index1 = (triplet >> 18) & 0x3F;
        const index2 = (triplet >> 12) & 0x3F;
        const index3 = (triplet >> 6) & 0x3F;
        const index4 = triplet & 0x3F;
        
        // Add padding based on the original data length
        if (i - 3 > str.length) {
            result += base64chars[index1] + base64chars[index2] + '==';
        } else if (i - 2 > str.length) {
            result += base64chars[index1] + base64chars[index2] + base64chars[index3] + '=';
        } else {
            result += base64chars[index1] + base64chars[index2] + base64chars[index3] + base64chars[index4];
        }
    }
  
    return result;
}

一般的な使用用途:

高度な機能

16進形式サポート

当ツールは16進形式の入力と出力をサポートしており、プログラムコードでバイナリデータを扱う開発者に便利です。

  • 入力:0x11,0x22,0x33またはシンプルな112233形式を受け付け
  • 出力:デコードしたBase64を16進形式に戻してコードに埋め込み

文字セットサポート

異なる文字セットは、テキストを異なる方法でバイトにエンコードします。当ツールは様々なテキストエンコーディングを処理するために複数の文字セットをサポートしています:

  • UTF-8: すべてのUnicode文字をサポートする汎用エンコーディング(デフォルト)
  • ASCII: 基本的な英語文字をサポートする7ビットエンコーディング(0-127)
  • Latin-1 (ISO-8859-1): 西欧文字をサポートする8ビットエンコーディング(ISO-8859-1)
  • UTF-16: WindowsとJavaで一般的に使用される16ビットエンコーディング(リトルエンディアン)

重要な注意点:

Base64と他のエンコーディングの比較:

エンコード方式 特徴 主な用途
Base64 64のASCII文字を使用してバイナリデータを表現 電子メール添付ファイル、テキストでのバイナリデータ送信
URLエンコーディング 特殊文字を%XX形式に変換 URLパラメータの受け渡し、フォーム送信
16進エンコーディング 各バイトを2つの16進文字で表現 ハッシュ値の表現、バイナリデータの可視化

Base64についての詳細な公式情報については、次のリソースを参照してください: RFC 4648(Base64標準) | Wikipedia: Base64 | RFC 2045(MIME仕様)