開発環境 メモ帳
実行環境 Internet Explorer 11


参考

hexdmp.html
<!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>
 
最終更新:2014年06月25日 08:57