|
|
- 'use strict';
-
- var zero = function (n, max) {
- n = n.toString(16).toUpperCase();
- while (n.length < max) {
- n = '0' + n;
- }
- return n;
- };
-
- module.exports = function (buffer) {
- var rows = Math.ceil(buffer.length / 16);
- var last = buffer.length % 16 || 16;
- var offsetLength = buffer.length.toString(16).length;
- if (offsetLength < 6) offsetLength = 6;
-
- var i;
- var str = '';
-
- var b = 0;
- var lastBytes;
- var lastSpaces;
- var v;
-
- for (i = 0; i < rows; i++) {
- str += '\u001b[36m' + zero(b, offsetLength) + '\u001b[0m ';
- lastBytes = i === rows - 1 ? last : 16;
- lastSpaces = 16 - lastBytes;
-
- var j;
- for (j = 0; j < lastBytes; j++) {
- str += ' ' + zero(buffer[b], 2);
- b++;
- }
-
- for (j = 0; j < lastSpaces; j++) {
- str += ' ';
- }
-
- b -= lastBytes;
- str += ' ';
-
- for (j = 0; j < lastBytes; j++) {
- v = buffer[b];
- str += (v > 31 && v < 127) || v > 159 ? String.fromCharCode(v) : '.';
- b++;
- }
-
- str += '\n';
- }
-
- return str;
- };
|