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);