|開発環境|メモ帳| |実行環境|Internet Explorer 11| #table_zebra(project, #fff, #eee) http://www.maroon.dti.ne.jp/lance/hexdmp.html 参考 -[[JavaScriptでファイル操作!? File APIを使いこなそう>http://www.atmarkit.co.jp/ait/articles/1112/16/news135.html]] -[[File APIでブラウザーからローカルファイルを操作>http://ascii.jp/elem/000/000/559/559105/index-4.html]] hexdmp.html #highlight(javascript){{ <!DOCTYPE html> <head> <title>hexdmp</title> <style type="text/css"> #disp { border:1ps solid gray; font-family:courier; font-size:11pt; } span { color:red; } </style> </head> <body> <h1>hexdmp</h1> <div id="drop" style="width:700px; height:150px; padding:10px; border:3px solid;" ondragover="onDragOver(event)">Drop here.</div> <br> <div id="disp"></div> <script> var disp = document.getElementById("disp"); var reader = new FileReader; var str = ""; str += check("reader.readAsArrayBuffer"); str += check("reader.readAsBinaryString"); str += check("reader.readAsDataURL"); str += check("reader.readAsText"); disp.innerHTML = str; document.getElementById("drop").addEventListener("drop", onDrop, false); function check(func) { return func + ": " + (eval(func) ? "o" : "x") + "<br>"; } function onDrop(event) { event.preventDefault(); var files = event.dataTransfer.files; var file = files[0]; disp.innerHTML = ""; { var str = ""; str += "name: " + file.name + "<br>"; str += "type: " + file.type + "<br>"; str += "size: " + file.size + " bytes<br>"; document.getElementById("drop").innerHTML = str; } reader.onload = function(event) { var delimiter = " - - - "; var alldata = ""; var data = event.target.result; var buf = new Uint8Array(data); for (var c = 0; c < buf.length; c += 16) { var address = ("0000000" + c.toString(16)).slice(-8).toUpperCase(); var hexlist = ""; var chrlist = ""; for (var i = 0; i < 16; i++) { var hex = "&"+"nbsp;"+"&"+"nbsp;"; // @wikiの仕様により分割 var chr = "&"+"nbsp;"; if (c + i < buf.length) { var num = buf[c + i]; var chr = String.fromCharCode(num); if (num < 0x20 || 0x7e < num) { chr = "<span>.</span>"; } else { switch (chr) { case " ": chr = "&"+"nbsp;"; break; case "<": chr = "&"+"lt;"; break; case ">": chr = "&"+"gt;"; break; case "&": chr = "&"+"amp;"; break; } } hex = ("0" + num.toString(16)).slice(-2).toUpperCase(); } hexlist += hex + delimiter.substr(i, 1); chrlist += chr; } alldata += address + " | " + hexlist + "| " + chrlist + "<br>"; } disp.innerHTML = alldata; } reader.readAsArrayBuffer(file); } function onDragOver(event) { event.preventDefault(); } </script> </body> }}