2025-07-23 15:02:40 +04:00

30 lines
957 B
TypeScript

export function extractData(buffer, dataLength = 2000): string {
let binaryData: string = "";
const pngHeader = [0x89, 0x50, 0x4e, 0x47, 0x0d, 0x0a, 0x1a, 0x0a]; // Header PNG
const headerEndIndex: number = buffer.findIndex((_, i) =>
pngHeader.every((byte, j) => buffer[i + j] === byte)
) + pngHeader.length;
for (let i = headerEndIndex; i < buffer.length; i++) {
if (binaryData.length < dataLength * 8) {
const binaryByte: string = buffer[i].toString(2).padStart(8, "0");
binaryData += binaryByte.slice(-1);
} else {
break;
}
}
let result: string = "";
for (let i = 0; i < binaryData.length; i += 8) {
const byte: string = binaryData.slice(i, i + 8);
result += String.fromCharCode(parseInt(byte, 2));
}
if (result.includes("0end")) {
result = result.split("0end")[0];
return result;
}
return null;
}