投稿者 tel | 2012年1月30日

配列をbase64エンコードする

遅くなりましたが、あけましておめでとうございます。

サーバにバイナリデータを送るのにちょっと必要だったので作成。

function base64(a) {
var t = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/',
length = a.length,
m = length % 3,
result = '';
for(var i = 0; i <= length - 3; i += 3) {
var index = (a[i] << 16) | (a[i + 1] << 8) | a[i + 2];
result += t[index >> 18 & 63]
+ t[index >> 12 & 63]
+ t[index >> 6 & 63]
+ t[index & 63];
}

if(m == 1) {
index = a[i] << 16;
result += t[index >> 18] + t[index >> 12 & 63] + '==';
} else if(m == 2) {
index = (a[i] << 16) | (a[i + 1] << 8);
result += t[index >> 18] + t[index >> 12 & 63] + t[index >> 6 & 63] + '=';
}

return result;
}

// 配列をbase64に変換
base64([1, 2, 3, 4, 5]);    // -> "AAECAwQ
// Int8Arrayをbase64に変換
base64(new Int8Array([255, 255, 255]));    // -> "////"

もうちょっとすっきりかけそうな気もする。

単にバイナリデータをサーバに送るだけならFormDataというのが使えるかも。あとはWebSocketとか。


コメントを残す

以下に詳細を記入するか、アイコンをクリックしてログインしてください。

WordPress.com ロゴ

WordPress.com アカウントを使ってコメントしています。 ログアウト / 変更 )

Twitter 画像

Twitter アカウントを使ってコメントしています。 ログアウト / 変更 )

Facebook の写真

Facebook アカウントを使ってコメントしています。 ログアウト / 変更 )

Google+ フォト

Google+ アカウントを使ってコメントしています。 ログアウト / 変更 )

%s と連携中

カテゴリー

%d人のブロガーが「いいね」をつけました。