<?php class HexEditor { private $filename; private $bin; private $size; public function __construct() { if(!isset($_POST["file"])) { $this->top(); $this->form(); $this->bottom(); } else { $this->deleteFile(); $this->openFile(); $this->javascript(); $this->top(); $this->show(); $this->bottom(); } } private function deleteFile() { $files = glob('temp/*'); foreach($files as $file) { if(is_file($file)) { unlink($file); } } } private function form() { print("<h3 style=\"margin-top:220px;\">file</h3>\n"); print("<form action=\"index.php\" method=\"post\" enctype=\"multipart/form-data\">\n"); print("Select file:\n"); print("<input type=\"file\" name=\"fileToUpload\" id=\"fileToUpload\">\n"); print("<input type=\"submit\" value=\"open\" name=\"file\">\n"); print("</form>\n"); } private function javascript() { print("<script>\n"); print("var sel = 0;\n"); print("function pos(n)\n"); print("{\n"); print("\tdocument.getElementById('f_' + sel).style.backgroundColor = '#111';\n"); print("\tdocument.getElementById('g_' + sel).style.backgroundColor = '#111';\n"); print("\tsel = n;\n"); print("\tdocument.getElementById('f_' + sel).style.backgroundColor = '#05f';\n"); print("\tdocument.getElementById('g_' + sel).style.backgroundColor = '#05f';\n"); print("\tvar j1 = document.getElementById('f_' + n).value;\n"); print("\tvar j2 = document.getElementById('f_' + (n + 1)).value;\n"); print("\tvar j3 = document.getElementById('f_' + (n + 2)).value;\n"); print("\tvar j4 = document.getElementById('f_' + (n + 3)).value;\n"); print("\tvar k1 = parseInt('0x' + j1);\n"); print("\tvar k2 = parseInt('0x' + j2);\n"); print("\tvar k3 = parseInt('0x' + j3);\n"); print("\tvar k4 = parseInt('0x' + j4);\n"); print("\tdocument.getElementById('8bit').innerHTML = k1;\n"); print("\tdocument.getElementById('16bit').innerHTML = k2 * 256 + k1;\n"); print("\tdocument.getElementById('24bit').innerHTML = k3 * 65536 + k2 * 256 + k1;\n"); print("\tdocument.getElementById('32bit').innerHTML = k4 * 16777216 + k3 * 65536 + k2 * 256 + k1;\n"); print("}\n"); print("</script>\n"); } private function top() { print("<html>\n"); print("<meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\"/>\n"); print("<head>\n"); print("<style>\n"); print("body{font:15pt Courier New, Monospace; padding:0; margin:0; background-color:#111; color:#ccc;}\n"); print("input[type=text]{background-color:#111; color:#ccc;}\n"); print("input:focus{outline:none;}\n"); print(".field1{border:0; width:80px; text-align:center;}\n"); print(".field2{border:0; width:30px; text-align:center;}\n"); print(".field3{border:0; width:15px; text-align:center;}\n"); print(".top{font:12pt Arial, Helvetica, sans-serif;; width:100%; height:200px; position:fixed; top:0; left:0; background-color:#05f; color:#fff; padding:0 10px;}\n"); print(".main{margin-top:220px;}\n"); print(".loadPanel{background-color:#111; padding:20px;}\n"); print("</style>\n"); print("</head>\n"); print("<body onload=\"pos(0)\">\n"); print("<div class=\"top\">\n"); print("<h1>Hex Editor</h1>\n"); print("<div>file name: " . $this->filename . " (" . $this->size . " Bytes)</div>\n"); print("<div style=\"margin-top:10px\">\n"); print("<div>int__8-bit: <span id=\"8bit\">0</span></div>\n"); print("<div>int_16-bit: <span id=\"16bit\">0</span></div>\n"); print("<div>int_24-bit: <span id=\"24bit\">0</span></div>\n"); print("<div>int_32-bit: <span id=\"32bit\">0</span></div>\n"); print("</div>\n"); print("</div>\n"); } private function bottom() { print("</body>\n"); print("</html>\n"); } private function openFile() { $this->filename = "temp/" . basename($_FILES["fileToUpload"]["name"]); if(move_uploaded_file($_FILES['fileToUpload']['tmp_name'], $this->filename)) { $handle = fopen($this->filename, "rb"); $this->size = filesize($this->filename); $this->bin = fread($handle, $this->size); fclose($handle); } else { print("<div>file not found...</div>\n"); } } private function show() { print("<div class=\"main\">\n"); $len = strlen($this->bin); for($i = 0; $i < strlen($this->bin); $i += 16) { $hex = dechex($i); for($f = 0; $f = 8 - strlen($hex); $f++) { $hex = "0" . $hex; } print("<input class=\"field1\" type=\"text\" maxlength=\"8\" value=\"" . strtoupper($hex) . "\" readonly>\n"); for($g = 0; $g < 16; $g++) { $hex = ""; if($i + $g < $len) { $hex = dechex(ord($this->bin[$i + $g])); } if(strlen($hex) == 1){$hex = "0" . $hex;} print("<input id=\"f_" . ($i + $g) . "\" class=\"field2\" type=\"text\" maxlength=\"2\" onfocus=\"pos(" . ($i + $g) . ")\" value=\"" . strtoupper($hex) . "\">"); } for($g = 0; $g < 16; $g++) { if($i + $g < $len) { $k = $this->bin[$i + $g]; if(ord($k) < 32 || ord($k) > 126){$k = ".";} print("<input id=\"g_" . ($i + $g) . "\" class=\"field3\" type=\"text\" onfocus=\"document.getElementById('f_" . ($i + $g) . "').focus();\" value=\"" . $k . "\" readonly>"); } } print("<br>"); } print("</div>\n"); } } new HexEditor(); ?>
Mi chiamo Cosimo Saccone e sono un programmatore napoletano di 44 anni con oltre 35 anni di esperienza nella programmazione (BASIC, Assembly). Realizzo progetti e programmi utilizzando i principali e più diffusi linguaggi (C, C++, PHP, Javascript, HTML) e software per la grafica (Photoshop, Illustrator, 3dsMax). Anche se la grafica rappresenta il mio principale settore di interesse, non disdegno il lavoro di back-end e di organizzazione dati e sono attento agli aspetti di efficienza e di risparmio delle risorse tipica della programmazione di basso livello (specie nel settore della grafica 3d). Realizzo siti internet, applicativi desktop e servizi di vario tipo. Ho una buona conoscenza della libreria OpenGL per lo sviluppo di applicazioni 3d interattive in C/C++. Cerco di adottare uno stile di programmazione fortemente ordinato e modulare. Possiedo, inoltre, una buona capacità di elaborazione della documentazione. Ho vari hobbies tra cui la pittura, la ginnastica e le lunghe passeggiate in solitudine.
Al fine di migliorare l’esperienza di navigazione sul nostro sito noi di cosimosaccone.com e i nostri partner selezionati elaboriamo i dati personali, compreso l’indirizzo IP e le pagine visitate, in relazione alla tua navigazione nei contenuti del sito, per i seguenti scopi:
Accesso alle informazioni
Dati precisi di geolocalizzazione
Misurazione del pubblico
Pubblicità e contenuti personalizzati
Ti ricordiamo che il termine cookie si riferisce a una porzione di dati inviati al tuo browser da un web server. Il cookie viene memorizzato sul tuo dispositivo e riconosciuto dal sito web che lo ha inviato in ogni navigazione successiva. Se vuoi saperne di più e compiere una scelta diversa, come il rifiuto del trattamento dei tuoi dati personali, clicca qui sulla nostra privacy policy. Potrai sempre modificare le tue scelte e impostare i singolo cookies selezionando il bottone qui sotto.
OK