diff --git a/src/core/operations/FrequencyDistribution.mjs b/src/core/operations/FrequencyDistribution.mjs index 685694cc..0c4c1563 100644 --- a/src/core/operations/FrequencyDistribution.mjs +++ b/src/core/operations/FrequencyDistribution.mjs @@ -31,6 +31,11 @@ class FrequencyDistribution extends Operation { "name": "Show 0%s", "type": "boolean", "value": true + }, + { + "name": "Show ASCII", + "type": "boolean", + "value": true } ]; } @@ -77,6 +82,7 @@ class FrequencyDistribution extends Operation { */ present(freq, args) { const showZeroes = args[0]; + const showAscii = args[1]; // Print let output = `
Total data length: ${freq.dataLength} @@ -97,7 +103,17 @@ Byte Percentage for (let i = 0; i < 256; i++) { if (freq.distribution[i] || showZeroes) { - output += " " + Utils.hex(i, 2) + " (" + + let c = " "; + if (showAscii) { + if (i <= 32) { + c = String.fromCharCode(0x2400 + i); + } else if (i === 127) { + c = String.fromCharCode(0x2421); + } else { + c = String.fromCharCode(i); + } + } + output += " " + Utils.hex(i, 2) + " " + c + " (" + (freq.percentages[i].toFixed(2).replace(".00", "") + "%)").padEnd(8, " ") + Array(Math.ceil(freq.percentages[i])+1).join("|") + "\n"; }