Beispiel #1
0
function decodeLength($fd, $length, &$json, $level = 0)
{
    $pad = str_pad("", $level * 4, " ");
    $rest = 0;
    while ($rest + 5 < $length) {
        $type = readByte($fd);
        $nlen = readByte($fd);
        $dlen = readInt($fd, 4);
        $name = readString($fd, $nlen);
        $rest += 6 + $nlen + $dlen;
        if ($type == 1 || $type == 5) {
            $subj = array();
            decodeLength($fd, $dlen, $subj, $level + 1);
            if ($name == "") {
                $json[] = $subj;
            } else {
                $json[$name] = $subj;
            }
            //echo "$pad$type $nlen $dlen $name\n";
            continue;
        }
        if ($type == 2) {
            $number = readNumber($fd, $dlen);
            if ($name == "") {
                $json[] = $number;
            } else {
                $json[$name] = $number;
            }
            //echo "$pad$type $nlen $dlen $name => " . gmp_strval($number) . "\n";
            continue;
        }
        if ($type == 3) {
            $data = readString($fd, $dlen);
            if ($name == "") {
                $json[] = $data;
            } else {
                $json[$name] = $data;
            }
            //echo "$pad$type $nlen $dlen $name => $data\n";
            continue;
        }
        $data = readString($fd, $dlen);
        $dump = "";
        for ($inx = 0; $inx < strlen($data); $inx++) {
            $dump .= ord($data[$inx]) . " ";
        }
        echo "=========================={$type} {$nlen} {$dlen} {$name} {$dump}\n";
        exit(0);
    }
}
/**
 *  Show numered menu and return user choice
 */
function showMenu($itemsRef)
{
    $functionsRef = array();
    print "\n";
    $i = 0;
    foreach ($itemsRef as $key => $value) {
        $i++;
        print $i . ' ' . $key . "\n";
        $functionsRef[$i] = $value;
    }
    $i++;
    print $i . " Exit\n";
    $functionsRef[$i] = 'exitOk';
    $choice = readNumber("Your choice ({$i})");
    if (!$choice || !isset($functionsRef[$choice])) {
        $function = $functionsRef[$i];
    } else {
        $function = $functionsRef[$choice];
    }
    $function();
}