<?php
echo "Running script version: 2025-03-08-10\n";

$file = fopen('1.DAT', 'rb');

$headerLength = 288;
$header = fread($file, $headerLength);
echo "Header hex: " . bin2hex($header) . "\n";
echo "Header length: " . strlen($header) . "\n";

fseek($file, $headerLength);

$recordNum = 1;
while (!feof($file) && $recordNum <= 5) {
    $record = fread($file, 39);
    if (strlen($record) != 39) {
        echo "Record $recordNum too short: " . strlen($record) . " bytes\n";
        break;
    }

    echo "Registro Nro: $recordNum\n";
    echo "Record hex (raw): " . bin2hex($record) . "\n";

    // Sanity check offsets
    for ($i = 0; $i < 39; $i += 5) {
        $len = min(5, 39 - $i);
        echo "Offset $i-" . ($i + $len - 1) . ": '" . bin2hex(substr($record, $i, $len)) . "'\n";
    }

    $timestamp = substr($record, 0, 19);
    echo "Timestamp: '$timestamp'\n";

    $padding = substr($record, 19, 5);
    echo "Padding: '" . bin2hex($padding) . "'\n";

    $tagIndex = ord(substr($record, 24, 1));
    echo "TagIndex: $tagIndex\n";

    $valueBin = substr($record, 25, 8);
    $valueBig = unpack('d', strrev($valueBin))[1];
    echo "Value hex: " . bin2hex($valueBin) . "\n";
    echo "Value (big-endian): $valueBig\n";

    $status = ord(substr($record, 33, 1));
    echo "Status: $status\n";

    $marker = substr($record, 34, 1);
    echo "Marker: '$marker'\n";

    $internalBin = substr($record, 35, 4);
    $internal = unpack('l', $internalBin)[1];
    echo "Internal hex: " . bin2hex($internalBin) . "\n";
    echo "Internal: $internal\n";

    echo "\n";
    $recordNum++;
}
fclose($file);
