これは少し異なるアプローチです - 文字型は必要ありません。ビット シフト手法として乗算を使用します。str.length が 4 の倍数でない場合でも機能するように書きましたが、実際には質問で次のようになると述べました...
注 - 私は「巧妙なコーディング」をしようとはしませんでした。そのため、一度に 1 ステートメントずつ明示的に割り当てるようにしました。しかし、これはあなたにいくつかのインスピレーションを与えるはずです.
function stringToIntArray(str) {
var l = Math.ceil(str.length/4); // not needed if you are sure it's a multiple of 4
var opArray = new Array(l); // known length - miniscule speed advantage?
var ii=0, jj=0, charCounter=0; // ii loops over 4-char word-of-interest
// jj counts elements in the output array
// charCounter points to the current character
opArray[0]=0;
while( charCounter < str.length ) {
ii = charCounter % 4; // count 0, 1, 2, 3, 0, 1, 2, 3...
opArray[jj] *= 256; // left shift 8 bits
opArray[jj] += str.charCodeAt(charCounter); // add next code
if(ii==3) {
opArray[++jj]=0;
}
charCounter++;
}
return opArray;
}
var myval = stringToIntArray("deadbeef");
alert("'dead' turns into " + myval[0] + "\n'beef' turns into " + myval[1]);
出力:
'dead' turns into 1684365668
'beef' turns into 1650812262
結果は期待通りです。HTML5 準拠のブラウザーは必要ありません。そしてビッグエンディアンです。