Revision: 25811
Initial Code
Initial URL
Initial Description
Initial Title
Initial Tags
Initial Language
at April 10, 2010 15:08 by aadsm
Initial Code
function readUTF16String(bytes, bigEndian) {
var ix = 0;
var offset1 = 1, offset2 = 0;
if( bytes.slice(0,2) == "\xFE\xFF") {
bigEndian = true;
ix = 2;
} else if( bytes.slice(0,2) == "\xFF\xFE") {
bigEndian = false;
ix = 2;
}
if( bigEndian ) {
offset1 = 0;
offset2 = 1;
}
var string = "";
for( ; ix < bytes.length; ix+=2 ) {
var byte1 = bytes[ix+offset1].charCodeAt(0);
var byte2 = bytes[ix+offset2].charCodeAt(0);
var word1 = (byte1<<8)+byte2;
if( byte1 < 0xD8 || byte1 >= 0xE0 ) {
string += String.fromCharCode(word1);
} else {
ix+=2;
var byte3 = bytes[ix+offset1].charCodeAt(0);
var byte4 = bytes[ix+offset2].charCodeAt(0);
var word2 = (byte3<<8)+byte4;
string += String.fromCharCode(word1, word2);
}
}
return string;
}
Initial URL
Initial Description
This is useful if you have a string where each character represents a byte like the one returned by getStringAt() in BinaryAjax.
Initial Title
Read a UTF16 String from a "byte" source
Initial Tags
Initial Language
JavaScript