String To/From ArrayBuffer
String to ArrayBuffer ArrayBuffer to String Supports UTF-16
by dshilkret
JavaScript
function writeToPage(str){
var p = document.createElement('p');
p.innerText = str;
document.body.appendChild(p);
}
function str2ab(str){
var buffer = new Uint16Array(str.length);
for(var idx = 0, len = str.length; idx < len; ++idx){
buffer[idx] = str.charCodeAt(idx);
}
return buffer;
}
function ab2str(buff){
var arr = new Uint16Array(buff),
retVal = "";
for(var idx = 0, len = arr.length; idx < len; idx += 65535){
if(idx + 65535 > len){
retVal += String.fromCharCode.apply(null, arr.subarray(idx, idx + (len - idx)));
}
else{
retVal += String.fromCharCode.apply(null, arr.subarray(idx, idx + 65535));
}
}
return retVal;
}
// test
var myStr = "Hello, DocInt!";
writeToPage(myStr);
var myBuffer = str2ab(myStr);
myBuffer = myBuffer.buffer;
writeToPage(myBuffer.toString());
var newStr = ab2str(myBuffer);
var newStr2 = new Uint8Array(myBuffer);
writeToPage(newStr);
writeToPage(newStr2);