主にプログラミングに関して。Python, .NET Framework(C#), JavaScript, その他いくらか。
記事にあるサンプルやコードは要検証。使用に際しては責任を負いかねます

スポンサーサイト

                
tags:
上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

JavaScriptでバイナリをいじる

                
tags: JavaScript
 JavaScriptでバイナリをいじるものを書いている。バイナリデータが整数で配列に入っている。それをbase64エンコードをしたいので”btoa(String.fromCharCode.apply(null, byteArray));”と書いた。applyの二つ目の引数には配列を使う。そうすることで呼び出された関数でその配列の要素一つ一つが、一つ一つ引数になって実行される。こんな風に書いたのは、”String.fromCharCode”が”String.fromCharCode(num1, num2, num3...)”と引数を取るようになっていて、配列一つを渡して実行するようになっていないから。
 それをテストしていたらエラー。ファイルサイズが小さいうちは問題なかったが、ファイルサイズが大きくなると起こるようになった。
"maximum call stack size exceeded error"
原因は関数に渡す引数の数が上限を超えてしまったんだろう。applyを使わずに1バイトずつString.fromCharCodeに渡して返り値を連結したところエラーは出なかった。
that.encode64 = function (byteArray) {
var binStr = ""
for (var p=0; p<byteArray.length; p++) {
binStr += String.fromCharCode(byteArray[p]);
}
return btoa(binStr);
};
            

コメントの投稿

非公開コメント

プロフィール

hMatoba

Author:hMatoba
Github

最新記事
リンク
作ったものなど
月別アーカイブ
カテゴリ
タグリスト

検索フォーム
Amazon
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。