show ascii too
This commit is contained in:
parent
1efc505490
commit
f46266439a
12
bin/cli.js
12
bin/cli.js
|
@ -5,13 +5,19 @@
|
||||||
var hexdump = require('../').hexdump;
|
var hexdump = require('../').hexdump;
|
||||||
var fsname = process.argv[2];
|
var fsname = process.argv[2];
|
||||||
var fs = require('fs');
|
var fs = require('fs');
|
||||||
|
var opts = {};
|
||||||
|
|
||||||
if (!fsname || '--help' === fs || '-h' === fs) {
|
if (!fsname || '--help' === fsname || '-h' === fsname) {
|
||||||
console.error('Usage: hexdump.js <filepath>');
|
console.error('Usage: hexdump.js -C <filepath>');
|
||||||
process.exit(2);
|
process.exit(2);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if ('-C' === fsname) {
|
||||||
|
opts.C = true;
|
||||||
|
fsname = process.argv[3];
|
||||||
|
}
|
||||||
|
|
||||||
try {
|
try {
|
||||||
fs.statSync(fsname);
|
fs.statSync(fsname);
|
||||||
} catch(e) {
|
} catch(e) {
|
||||||
|
@ -21,7 +27,7 @@ try {
|
||||||
}
|
}
|
||||||
|
|
||||||
var nb = fs.readFileSync(fsname);
|
var nb = fs.readFileSync(fsname);
|
||||||
var str = hexdump(nb.buffer, nb.byteOffset, nb.byteLength);
|
var str = hexdump(nb.buffer, nb.byteOffset, nb.byteLength, opts);
|
||||||
console.log(str);
|
console.log(str);
|
||||||
|
|
||||||
}());
|
}());
|
||||||
|
|
19
hexdump.js
19
hexdump.js
|
@ -1,7 +1,8 @@
|
||||||
(function (exports) {
|
(function (exports) {
|
||||||
'use strict';
|
'use strict';
|
||||||
|
|
||||||
exports.hexdump = function hexdump(ab, offset, len) {
|
exports.hexdump = function hexdump(ab, offset, len, opts) {
|
||||||
|
if (!opts) { opts = {}; }
|
||||||
var ui8 = new Uint8Array(ab.buffer || ab, offset || ab.byteOffset, len || ab.byteLength);
|
var ui8 = new Uint8Array(ab.buffer || ab, offset || ab.byteOffset, len || ab.byteLength);
|
||||||
var bytecount = 0;
|
var bytecount = 0;
|
||||||
var head = ' 0 1 2 3 4 5 6 7 8 9 A B C D E F';
|
var head = ' 0 1 2 3 4 5 6 7 8 9 A B C D E F';
|
||||||
|
@ -20,7 +21,21 @@ exports.hexdump = function hexdump(ab, offset, len) {
|
||||||
lead = '0' + lead;
|
lead = '0' + lead;
|
||||||
}
|
}
|
||||||
|
|
||||||
return lead + ' ' + str;
|
while (str.length < 48) {
|
||||||
|
str += ' ';
|
||||||
|
}
|
||||||
|
|
||||||
|
if (opts.C) {
|
||||||
|
return lead + ' ' + str + ' |' + str.replace(/ /g, '').match(/.{1,2}/g).map(function (ch) {
|
||||||
|
var c = String.fromCharCode(parseInt(ch, 16));
|
||||||
|
if (!/[ -~]/.test(c)) {
|
||||||
|
c = '.';
|
||||||
|
}
|
||||||
|
return c;
|
||||||
|
}).join('') + '|';
|
||||||
|
} else {
|
||||||
|
return lead + ' ' + str;
|
||||||
|
}
|
||||||
}).join('\n');
|
}).join('\n');
|
||||||
|
|
||||||
trail = (len || ab.byteLength).toString(16);
|
trail = (len || ab.byteLength).toString(16);
|
||||||
|
|
Loading…
Reference in New Issue