함수 base64 encode()

Jmnote (토론 | 기여)님의 2014년 5월 22일 (목) 10:28 판 (새 문서: Category:Encoding ;base64_encode *Encodes string using MIME base64 algorithm ==JavaScript== category:Javascript <source lang='javascript'> function base64_encode(str) { var...)
(차이) ← 이전 판 | 최신판 (차이) | 다음 판 → (차이)
base64_encode
  • Encodes string using MIME base64 algorithm

1 JavaScript

function base64_encode(str) {
  var key = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=";
  var output = "";
  var c1, c2, c3, e1, e2, e3, e4;
  var i = 0;
  str = utf8_encode(str);
  while (i < str.length) {
    c1 = str.charCodeAt(i++);
    c2 = str.charCodeAt(i++);
    c3 = str.charCodeAt(i++);
    e1 = c1 >> 2;
    e2 = ((c1 & 3) << 4) | (c2 >> 4);
    e3 = ((c2 & 15) << 2) | (c3 >> 6);
    e4 = c3 & 63;
    if (isNaN(c2)) e3 = e4 = 64;
    else if (isNaN(c3)) e4 = 64;
    output = output + key.charAt(e1) + key.charAt(e2) + key.charAt(e3) + key.charAt(e4);
  }
  return output;
}
document.write(base64_encode('★A가あ中')); // 4piFQeqwgOOBguS4rQ==

2 Objective-C

#define CHAR_AT(str, n) [str substringWithRange:NSMakeRange(n,1)]
#define CHAR_CODE_AT(str, n) (int)[str characterAtIndex:n]
+(NSString*) base64_encode:(NSString*)str {
    NSString* key = @"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=";
    NSString* output = @"";
    int c1, c2, c3, e1, e2, e3, e4;
    int i = 0;
    str = [Util utf8_encode:str];
    while (i < [str length]) {
        c2 = c3 = -1;
        c1 = CHAR_CODE_AT(str, i++);
        if(i<[str length]) c2 = CHAR_CODE_AT(str, i++);
        if(i<[str length]) c3 = CHAR_CODE_AT(str, i++);
        e1 = c1 >> 2;
        e2 = (c1&3) << 4;
        if(c2 < 0) e3 = e4 = 64;
        else {
            e2 = e2 | (c2>>4); e3 = (c2&15) << 2;
            if(c3 < 0) e4 = 64;
            else { e3 = e3 | (c3>>6); e4 = c3 & 63; }
        }
        output = [Util concat:output,CHAR_AT(key,e1),CHAR_AT(key,e2),CHAR_AT(key,e3),CHAR_AT(key,e4),nil]; 
    }
    return output;
}
NSLog(@"%@", [Util base64_encode:@"★A가あ中"]); // 4piFQeqwgOOBguS4rQ==
#define CHAR_AT(str, n) [str substringWithRange:NSMakeRange(n,1)]
#define CHAR_CODE_AT(str, n) (int)[str characterAtIndex:n]
+(NSString*) base64_encode:(NSString*)str {
    NSString* key = @"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=";
    NSString* output = @"";
    int c1, c2, c3, e1, e2, e3, e4;
    int i = 0;
    str = [Util utf8_encode:str];
    while (i < [str length]) {
        c2 = c3 = 0;
        c1 = CHAR_CODE_AT(str, i++);
        if(i<[str length]) c2 = CHAR_CODE_AT(str, i++);
        if(i<[str length]) c3 = CHAR_CODE_AT(str, i++);
        e1 = c1 >> 2;
        e2 = (c1&3) << 4 | c2>>4;
        e3 = (c2&15) << 2 | c3>>6;
        e4 = c3 & 63;
        if(c2 < 1) e3 = e4 = 64;
        if(c3 < 1) e4 = 64;
        output = [Util concat:output,CHAR_AT(key,e1),CHAR_AT(key,e2),CHAR_AT(key,e3),CHAR_AT(key,e4),nil]; 
    }
    return output;
}
NSLog(@"%@", [Util base64_encode:@"★A가あ中"]); // 4piFQeqwgOOBguS4rQ==

3 PHP

$str = 'This is an encoded string';
echo base64_encode($str);
// VGhpcyBpcyBhbiBlbmNvZGVkIHN0cmluZw==
echo base64_encode('★A가あ中'); // 4piFQeqwgOOBguS4rQ==

4 Python

import base64
str = 'This is an encoded string'
print base64.b64encode(str);
// VGhpcyBpcyBhbiBlbmNvZGVkIHN0cmluZw==
# -*- coding: utf-8 -*-
import base64
str = '★A가あ中'
print base64.b64encode(str);
// 4piFQeqwgOOBguS4rQ==

5 같이 보기

문서 댓글 ({{ doc_comments.length }})
{{ comment.name }} {{ comment.created | snstime }}