Deprecated: Creation of dynamic property wpdb::$categories is deprecated in /usr/home/bugyo/public_html/b-log/wp-includes/wp-db.php on line 668

Deprecated: Creation of dynamic property wpdb::$post2cat is deprecated in /usr/home/bugyo/public_html/b-log/wp-includes/wp-db.php on line 668

Deprecated: Creation of dynamic property wpdb::$link2cat is deprecated in /usr/home/bugyo/public_html/b-log/wp-includes/wp-db.php on line 668

Deprecated: Return type of WP_Theme::offsetExists($offset) should either be compatible with ArrayAccess::offsetExists(mixed $offset): bool, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in /usr/home/bugyo/public_html/b-log/wp-includes/class-wp-theme.php on line 554

Deprecated: Return type of WP_Theme::offsetGet($offset) should either be compatible with ArrayAccess::offsetGet(mixed $offset): mixed, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in /usr/home/bugyo/public_html/b-log/wp-includes/class-wp-theme.php on line 595

Deprecated: Return type of WP_Theme::offsetSet($offset, $value) should either be compatible with ArrayAccess::offsetSet(mixed $offset, mixed $value): void, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in /usr/home/bugyo/public_html/b-log/wp-includes/class-wp-theme.php on line 535

Deprecated: Return type of WP_Theme::offsetUnset($offset) should either be compatible with ArrayAccess::offsetUnset(mixed $offset): void, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in /usr/home/bugyo/public_html/b-log/wp-includes/class-wp-theme.php on line 544

Deprecated: Using ${var} in strings is deprecated, use {$var} instead in /usr/home/bugyo/public_html/b-log/wp-includes/comment-template.php on line 1739

Deprecated: Return type of WP_REST_Request::offsetExists($offset) should either be compatible with ArrayAccess::offsetExists(mixed $offset): bool, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in /usr/home/bugyo/public_html/b-log/wp-includes/rest-api/class-wp-rest-request.php on line 960

Deprecated: Return type of WP_REST_Request::offsetGet($offset) should either be compatible with ArrayAccess::offsetGet(mixed $offset): mixed, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in /usr/home/bugyo/public_html/b-log/wp-includes/rest-api/class-wp-rest-request.php on line 980

Deprecated: Return type of WP_REST_Request::offsetSet($offset, $value) should either be compatible with ArrayAccess::offsetSet(mixed $offset, mixed $value): void, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in /usr/home/bugyo/public_html/b-log/wp-includes/rest-api/class-wp-rest-request.php on line 992

Deprecated: Return type of WP_REST_Request::offsetUnset($offset) should either be compatible with ArrayAccess::offsetUnset(mixed $offset): void, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in /usr/home/bugyo/public_html/b-log/wp-includes/rest-api/class-wp-rest-request.php on line 1003

Deprecated: Return type of WP_Block_List::current() should either be compatible with Iterator::current(): mixed, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in /usr/home/bugyo/public_html/b-log/wp-includes/class-wp-block-list.php on line 151

Deprecated: Return type of WP_Block_List::next() should either be compatible with Iterator::next(): void, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in /usr/home/bugyo/public_html/b-log/wp-includes/class-wp-block-list.php on line 175

Deprecated: Return type of WP_Block_List::key() should either be compatible with Iterator::key(): mixed, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in /usr/home/bugyo/public_html/b-log/wp-includes/class-wp-block-list.php on line 164

Deprecated: Return type of WP_Block_List::valid() should either be compatible with Iterator::valid(): bool, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in /usr/home/bugyo/public_html/b-log/wp-includes/class-wp-block-list.php on line 186

Deprecated: Return type of WP_Block_List::rewind() should either be compatible with Iterator::rewind(): void, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in /usr/home/bugyo/public_html/b-log/wp-includes/class-wp-block-list.php on line 138

Deprecated: Return type of WP_Block_List::offsetExists($index) should either be compatible with ArrayAccess::offsetExists(mixed $offset): bool, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in /usr/home/bugyo/public_html/b-log/wp-includes/class-wp-block-list.php on line 75

Deprecated: Return type of WP_Block_List::offsetGet($index) should either be compatible with ArrayAccess::offsetGet(mixed $offset): mixed, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in /usr/home/bugyo/public_html/b-log/wp-includes/class-wp-block-list.php on line 89

Deprecated: Return type of WP_Block_List::offsetSet($index, $value) should either be compatible with ArrayAccess::offsetSet(mixed $offset, mixed $value): void, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in /usr/home/bugyo/public_html/b-log/wp-includes/class-wp-block-list.php on line 110

Deprecated: Return type of WP_Block_List::offsetUnset($index) should either be compatible with ArrayAccess::offsetUnset(mixed $offset): void, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in /usr/home/bugyo/public_html/b-log/wp-includes/class-wp-block-list.php on line 127

Deprecated: Return type of WP_Block_List::count() should either be compatible with Countable::count(): int, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in /usr/home/bugyo/public_html/b-log/wp-includes/class-wp-block-list.php on line 199

Deprecated: Creation of dynamic property WP_Term::$object_id is deprecated in /usr/home/bugyo/public_html/b-log/wp-includes/class-wp-term.php on line 198

Deprecated: Creation of dynamic property WP_Term::$object_id is deprecated in /usr/home/bugyo/public_html/b-log/wp-includes/class-wp-term.php on line 198

Deprecated: Creation of dynamic property WP_Term::$object_id is deprecated in /usr/home/bugyo/public_html/b-log/wp-includes/class-wp-term.php on line 198

Deprecated: Creation of dynamic property WP_Term::$object_id is deprecated in /usr/home/bugyo/public_html/b-log/wp-includes/class-wp-term.php on line 198
[JavaScript] Base64のデコード – B-LOG
B-LOG

[JavaScript] Base64のデコード

JavaScriptでBase64をデコードするには次のように書く。

var b64_table = [
    '\x00','\x01','\x02','\x03','\x04','\x05','\x06','\x07',
    '\x08','\x09','\x0A','\x0B','\x0C','\x0D','\x0E','\x0F',
    '\x10','\x11','\x12','\x13','\x14','\x15','\x16','\x17',
    '\x18','\x19','\x1A','\x1B','\x1C','\x1D','\x1E','\x1F',
    '\x20','\x21','\x22','\x23','\x24','\x25','\x26','\x27',
    '\x28','\x29','\x2A','\x2B','\x2C','\x2D','\x2E','\x2F',
    '\x30','\x31','\x32','\x33','\x34','\x35','\x36','\x37',
    '\x38','\x39','\x3A','\x3B','\x3C','\x3D','\x3E','\x3F',
    '\x40','\x41','\x42','\x43','\x44','\x45','\x46','\x47',
    '\x48','\x49','\x4A','\x4B','\x4C','\x4D','\x4E','\x4F',
    '\x50','\x51','\x52','\x53','\x54','\x55','\x56','\x57',
    '\x58','\x59','\x5A','\x5B','\x5C','\x5D','\x5E','\x5F',
    '\x60','\x61','\x62','\x63','\x64','\x65','\x66','\x67',
    '\x68','\x69','\x6A','\x6B','\x6C','\x6D','\x6E','\x6F',
    '\x70','\x71','\x72','\x73','\x74','\x75','\x76','\x77',
    '\x78','\x79','\x7A','\x7B','\x7C','\x7D','\x7E','\x7F',
    '\x80','\x81','\x82','\x83','\x84','\x85','\x86','\x87',
    '\x88','\x89','\x8A','\x8B','\x8C','\x8D','\x8E','\x8F',
    '\x90','\x91','\x92','\x93','\x94','\x95','\x96','\x97',
    '\x98','\x99','\x9A','\x9B','\x9C','\x9D','\x9E','\x9F',
    '\xA0','\xA1','\xA2','\xA3','\xA4','\xA5','\xA6','\xA7',
    '\xA8','\xA9','\xAA','\xAB','\xAC','\xAD','\xAE','\xAF',
    '\xB0','\xB1','\xB2','\xB3','\xB4','\xB5','\xB6','\xB7',
    '\xB8','\xB9','\xBA','\xBB','\xBC','\xBD','\xBE','\xBF',
    '\xC0','\xC1','\xC2','\xC3','\xC4','\xC5','\xC6','\xC7',
    '\xC8','\xC9','\xCA','\xCB','\xCC','\xCD','\xCE','\xCF',
    '\xD0','\xD1','\xD2','\xD3','\xD4','\xD5','\xD6','\xD7',
    '\xD8','\xD9','\xDA','\xDB','\xDC','\xDD','\xDE','\xDF',
    '\xE0','\xE1','\xE2','\xE3','\xE4','\xE5','\xE6','\xE7',
    '\xE8','\xE9','\xEA','\xEB','\xEC','\xED','\xEE','\xEF',
    '\xF0','\xF1','\xF2','\xF3','\xF4','\xF5','\xF6','\xF7',
    '\xF8','\xF9','\xFA','\xFB','\xFC','\xFD','\xFE','\xFF'
];

function b64_decode_char(c){
    if('A' <= c && c <= 'Z'){
        return c.charCodeAt(0) - 'A'.charCodeAt(0);
    }
    if('a' <= c && c <= 'z'){
        return c.charCodeAt(0) - 'a'.charCodeAt(0) + 26;
    }
    if('0' <= c && c <= '9'){
        return c.charCodeAt(0) - '0'.charCodeAt(0) + 52;
    }
    if(c == '+'){
        return 62;
    }
    if(c == '/'){
        return 63;
    }
    if(c == '='){
        return 0;
    }
    error(true, "invalid base64 character. " + c);
    return -1;
}

function b64_decode(str){
    var decoded = "";
    for(var i=0; i> 16 & 0xff];
        decoded += b64_table[buf >> 8  & 0xff];
        decoded += b64_table[buf       & 0xff];
    }
    var ex = 0;
    if(str.charAt(str.length-1) == '=') ex++;
    if(str.charAt(str.length-2) == '=') ex++;
    if(ex != 0){
        decoded =  decoded.substring(0, decoded.length-ex);
    }
    return decoded;
}

errorは中で例外を投げている。