113 lines
2.7 KiB
JavaScript
113 lines
2.7 KiB
JavaScript
export const is_big_endian_system =
|
|
new Uint8Array(new Uint32Array([0x12345678]).buffer)[0] === 0x12;
|
|
|
|
export const is_little_endian_system =
|
|
new Uint8Array(new Uint32Array([0x12345678]).buffer)[0] === 0x78;
|
|
|
|
export const i8_to_ui8_array = (num) => {
|
|
if (typeof num === 'string' || num instanceof String) {
|
|
num = parseInt(num, 10);
|
|
}
|
|
|
|
const buffer = Buffer.alloc(1);
|
|
buffer.writeInt8(num);
|
|
return new Uint8Array(buffer);
|
|
};
|
|
|
|
export const ui8_array_to_i8 = (ar, offset) => {
|
|
const buffer = Buffer.alloc(1);
|
|
buffer[0] = ar[offset];
|
|
|
|
return buffer.readInt8(0);
|
|
};
|
|
|
|
export const ui8_to_ui8_array = (num) => {
|
|
if (typeof num === 'string' || num instanceof String) {
|
|
num = parseInt(num, 10);
|
|
}
|
|
|
|
const buffer = Buffer.alloc(1);
|
|
buffer.writeUInt8(num);
|
|
return new Uint8Array(buffer);
|
|
};
|
|
|
|
export const ui8_array_to_ui8 = (ar, offset) => {
|
|
const buffer = Buffer.alloc(1);
|
|
buffer[0] = ar[offset];
|
|
|
|
return buffer.readUInt8(0);
|
|
};
|
|
|
|
export const i16_to_be_ui8_array = (num) => {
|
|
if (typeof num === 'string' || num instanceof String) {
|
|
num = parseInt(num, 10);
|
|
}
|
|
|
|
const buffer = Buffer.alloc(2);
|
|
buffer.writeInt16BE(num);
|
|
return new Uint8Array(buffer);
|
|
};
|
|
|
|
export const be_ui8_array_to_i16 = (ar, offset) => {
|
|
const buffer = Buffer.alloc(2);
|
|
for (let i = offset; i < buffer.length + offset; i++) {
|
|
buffer[i - offset] = ar[i];
|
|
}
|
|
return buffer.readInt16BE(0);
|
|
};
|
|
|
|
export const ui16_to_be_ui8_array = (num) => {
|
|
if (typeof num === 'string' || num instanceof String) {
|
|
num = parseInt(num, 10);
|
|
}
|
|
|
|
const buffer = Buffer.alloc(2);
|
|
buffer.writeUInt16BE(num);
|
|
return new Uint8Array(buffer);
|
|
};
|
|
|
|
export const be_ui8_array_to_ui16 = (ar, offset) => {
|
|
const buffer = Buffer.alloc(2);
|
|
for (let i = offset; i < buffer.length + offset; i++) {
|
|
buffer[i - offset] = ar[i];
|
|
}
|
|
return buffer.readUInt16BE(0);
|
|
};
|
|
|
|
export const i32_to_be_ui8_array = (num) => {
|
|
if (typeof num === 'string' || num instanceof String) {
|
|
num = parseInt(num, 10);
|
|
}
|
|
|
|
const buffer = Buffer.alloc(4);
|
|
buffer.writeInt32BE(num);
|
|
return new Uint8Array(buffer);
|
|
};
|
|
|
|
export const be_ui8_array_to_i32 = (ar, offset) => {
|
|
const buffer = Buffer.alloc(4);
|
|
for (let i = offset; i < buffer.length + offset; i++) {
|
|
buffer[i - offset] = ar[i];
|
|
}
|
|
return buffer.readInt32BE(0);
|
|
};
|
|
|
|
export const ui32_to_be_ui8_array = (num) => {
|
|
if (typeof num === 'string' || num instanceof String) {
|
|
num = parseInt(num, 10);
|
|
}
|
|
|
|
const buffer = Buffer.alloc(4);
|
|
buffer.writeUInt32BE(num);
|
|
return new Uint8Array(buffer);
|
|
};
|
|
|
|
export const be_ui8_array_to_ui32 = (ar, offset) => {
|
|
const buffer = Buffer.alloc(4);
|
|
for (let i = offset; i < buffer.length + offset; i++) {
|
|
buffer[i - offset] = ar[i];
|
|
}
|
|
|
|
return buffer.readUInt32BE(0);
|
|
};
|