Skip to content

Instantly share code, notes, and snippets.

@kig
Created May 18, 2012 09:35
Show Gist options
  • Save kig/2724278 to your computer and use it in GitHub Desktop.
Save kig/2724278 to your computer and use it in GitHub Desktop.
Change Typed Array endianness
ArrayBuffer.littleEndian = new Int8Array(new Int16Array([1]).buffer)[0] > 0;
var arrayToNative = function(array, arrayIsLittleEndian) {
if (!!arrayIsLittleEndian == ArrayBuffer.littleEndian) {
return array;
} else {
return flipArrayEndianness(array);
}
};
var nativeToEndian = function(array, littleEndian) {
if (ArrayBuffer.littleEndian == !!littleEndian) {
return array;
} else {
return flipArrayEndianness(array);
}
};
var flipArrayEndianness = function(array) {
var u8 = new Uint8Array(array.buffer, array.byteOffset, array.byteLength);
for (var i=0; i<array.byteLength; i+=array.BYTES_PER_ELEMENT) {
for (var j=i+elementSize-1, k=i; j>k; j--, k++) {
var tmp = u8[k];
u8[k] = u8[j];
u8[j] = tmp;
}
}
return array;
};
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment