function fdetokenize($tokenstring) { //Recupération des tokens $tokens = fopen("ti82tokens.dat", "rb"); fseek($tokens, 0); for ($i = 0; $i < filesize("ti82tokens.dat") / 16; $i++) { fseek($tokens, $i * 16); for ($j = 0; $j < 16; $j++) { $MP[$i][$j] = fread($tokens, 1); // echo "'".$MP[$i][$j].'"'; } } fclose($tokens); //Traitement $char = 0; $result = ""; while ($char < count($tokenstring)) { $pos = $tokenstring[$char]; if ($pos > count($MP)) { return 'Invalid Token!'; } $st = ""; $st2 = ""; for ($i = 1; $i < 9; $i++) { if (ord($MP[$pos][$i]) > 0xe) { // echo $MP[$pos][$i]; $st .= $MP[$pos][$i]; } } $X = PosA($MP[$pos], chr(38) . '*'); if ($X > 0) { $X -= 2; $char++; if (count(array_slice($tokenstring, $char, 1)) == 0) { return 'Error! Missing 2'; } $bufferword = substr($st, $X, 5); $st = ""; if ($bufferword + $tokenstring[$char] <= count($MP)) { for ($i = 0; $i < 9; $i++) { if (ord($MP[$bufferword + $tokenstring[$char]][$i]) > 0xf) { $st .= $MP[$bufferword + $tokenstring[$char]][$i]; } } } } if ($st == chr(38) . '$black') { $st = ""; } if ($st == chr(38) . '#CRLF') { $st = "\r\n"; } // echo $pos.' '; // echo '"'.$st.'"<br/>'; $result .= $st; $char++; } return $result; }
function fdetokenize($tokenstring) { //Recupération des tokens $tokens = fopen("ti83tokenkeys.dat", "rb"); $tokenstrue = fopen("ti83tokens.dat", "rb"); fseek($tokens, 0); for ($i = 0; $i < filesize("ti83tokenkeys.dat") / 16; $i++) { fseek($tokens, $i * 16); fseek($tokenstrue, $i * 16); for ($j = 0; $j < 16; $j++) { $MP[$i][$j] = fread($tokens, 1); $MPtrue[$i][$j] = fread($tokenstrue, 1); // echo "'".$MP[$i][$j].'"'; } } fclose($tokens); fclose($tokenstrue); //Traitement $char = 0; $result = ""; $result2 = ""; while ($char < count($tokenstring) - 3) { $pos = $tokenstring[$char]; if ($pos > count($MP)) { return 'Invalid Token!'; } $st = ""; $sttrue = ""; $st2 = ""; $realst = ""; for ($i = 1; $i < 15; $i++) { if (ord($MP[$pos][$i]) > 0xe) { // echo $MP[$pos][$i]; $st .= '<img src="./images/8xpkeys/chr' . ord($MP[$pos][$i]) . '.gif">'; } if (ord($MPtrue[$pos][$i]) > 0xe) { $sttrue .= $MPtrue[$pos][$i]; $realst .= $MPtrue[$pos][$i]; } } $X = PosA($MP[$pos], chr(38) . '*'); if ($X > 0) { $X -= 2; $char++; if (count(array_slice($tokenstring, $char, 1)) == 0) { return 'Error! Missing 2'; } $bufferword = substr($realst, $X, 5); $st = ""; $sttrue = ""; if ($bufferword + $tokenstring[$char] <= count($MP)) { for ($i = 0; $i < 15; $i++) { if (ord($MP[$bufferword + $tokenstring[$char]][$i]) > 0xf) { $st .= '<img src="./images/8xpkeys/chr' . ord($MP[$bufferword + $tokenstring[$char]][$i]) . '.gif">'; } if (ord($MPtrue[$bufferword + $tokenstring[$char]][$i]) > 0xf) { $sttrue .= $MPtrue[$bufferword + $tokenstring[$char]][$i]; } } } } if ($sttrue == chr(38) . '$black') { $sttrue = ""; } if ($sttrue == chr(38) . '#CRLF') { $sttrue = "\r\n"; } // echo $pos.' '; // echo '"'.$st.'"<br/>'; if ($sttrue == '&$black' || substr($sttrue, 0, 2) == '&*' || substr($sttrue, 0, 2) == '&!') { $st = ""; $sttrue = ""; } $result .= $st; if ($pos == 0x3f) { $result .= "\r\n"; } $result2 .= $sttrue; if ($pos == 0x3f) { $result .= "<br>"; } $char++; } $finalresult = array($result, $result2); return $finalresult; }