Having to deal with many file header format i.e. bmp, tiff, wav, mp3, etc... I developed a few basic routines to deal with them. I was wondering if there was a better way? Also they do not deal with signed nor float value.
function Read2BytesToUWord (ThisArray, Offset, UseLittleEndian){
let ThisWord = 0;
if(UseLittleEndian){
ThisWord |= ThisArray[Offset + 1].charCodeAt() << 8;
ThisWord |= ThisArray[Offset + 0].charCodeAt();
} else {
ThisWord = ThisArray[Offset + 0].charCodeAt();
ThisWord |= ThisArray[Offset + 1].charCodeAt() << 8;
}
return Number((ThisWord));
}
function Read4BytesToUDWord (ThisArray, Offset, UseLittleEndian){
let ThisDWord = 0;
if(UseLittleEndian){
ThisDWord = ThisArray[Offset + 3].charCodeAt() << 24;
ThisDWord |= ThisArray[Offset + 2].charCodeAt() << 16;
ThisDWord |= ThisArray[Offset + 1].charCodeAt() << 8;
ThisDWord |= ThisArray[Offset + 0].charCodeAt();
} else {
ThisDWord = ThisArray[Offset + 3].charCodeAt();
ThisDWord |= ThisArray[Offset + 2].charCodeAt() << 8;
ThisDWord |= ThisArray[Offset + 1].charCodeAt() << 16;
ThisDWord |= ThisArray[Offset + 0].charCodeAt() << 24;
}
return Number((ThisDWord));
}
function ReadBytesToString (ThisArray, Offset, ThisLen){
let ThisStr = "";
for(let Indx = 0; Indx < ThisLen; Indx++){
ThisStr += (ThisArray[Offset + Indx]);
}
return ThisStr;
}