File size: 1,559 Bytes
b0bfea8 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 |
/**
* Reads as little endian
* @param dataArray {IndexedByteArray}
* @param bytesAmount {number}
* @returns {number}
*/
export function readLittleEndian(dataArray, bytesAmount)
{
let out = 0;
for (let i = 0; i < bytesAmount; i++)
{
out |= (dataArray[dataArray.currentIndex++] << i * 8);
}
// make sure it stays unsigned
return out >>> 0;
}
/**
* Writes a number as little endian seems to also work for negative numbers so yay?
* @param dataArray {IndexedByteArray}
* @param number {number}
* @param byteTarget {number}
*/
export function writeLittleEndian(dataArray, number, byteTarget)
{
for (let i = 0; i < byteTarget; i++)
{
dataArray[dataArray.currentIndex++] = (number >> (i * 8)) & 0xFF;
}
}
/**
* @param dataArray {IndexedByteArray}
* @param word {number}
*/
export function writeWord(dataArray, word)
{
dataArray[dataArray.currentIndex++] = word & 0xFF;
dataArray[dataArray.currentIndex++] = word >> 8;
}
/**
* @param dataArray {IndexedByteArray}
* @param dword {number}
*/
export function writeDword(dataArray, dword)
{
writeLittleEndian(dataArray, dword, 4);
}
/**
* @param byte1 {number}
* @param byte2 {number}
* @returns {number}
*/
export function signedInt16(byte1, byte2)
{
let val = (byte2 << 8) | byte1;
if (val > 32767)
{
return val - 65536;
}
return val;
}
/**
* @param byte {number}
* @returns {number}
*/
export function signedInt8(byte)
{
if (byte > 127)
{
return byte - 256;
}
return byte;
} |