|
@@ -81,22 +81,23 @@ const Entropy = {
|
|
/**
|
|
/**
|
|
* Frequency distribution operation.
|
|
* Frequency distribution operation.
|
|
*
|
|
*
|
|
- * @param {byteArray} input
|
|
|
|
|
|
+ * @param {ArrayBuffer} input
|
|
* @param {Object[]} args
|
|
* @param {Object[]} args
|
|
* @returns {html}
|
|
* @returns {html}
|
|
*/
|
|
*/
|
|
runFreqDistrib: function (input, args) {
|
|
runFreqDistrib: function (input, args) {
|
|
- if (!input.length) return "No data";
|
|
|
|
|
|
+ const data = new Uint8Array(input);
|
|
|
|
+ if (!data.length) return "No data";
|
|
|
|
|
|
let distrib = new Array(256).fill(0),
|
|
let distrib = new Array(256).fill(0),
|
|
percentages = new Array(256),
|
|
percentages = new Array(256),
|
|
- len = input.length,
|
|
|
|
|
|
+ len = data.length,
|
|
showZeroes = args[0],
|
|
showZeroes = args[0],
|
|
i;
|
|
i;
|
|
|
|
|
|
// Count bytes
|
|
// Count bytes
|
|
for (i = 0; i < len; i++) {
|
|
for (i = 0; i < len; i++) {
|
|
- distrib[input[i]]++;
|
|
|
|
|
|
+ distrib[data[i]]++;
|
|
}
|
|
}
|
|
|
|
|
|
// Calculate percentages
|
|
// Calculate percentages
|
|
@@ -138,21 +139,22 @@ const Entropy = {
|
|
/**
|
|
/**
|
|
* Chi Square operation.
|
|
* Chi Square operation.
|
|
*
|
|
*
|
|
- * @param {byteArray} data
|
|
|
|
|
|
+ * @param {ArrayBuffer} data
|
|
* @param {Object[]} args
|
|
* @param {Object[]} args
|
|
* @returns {number}
|
|
* @returns {number}
|
|
*/
|
|
*/
|
|
runChiSq: function(input, args) {
|
|
runChiSq: function(input, args) {
|
|
|
|
+ const data = new Uint8Array(input);
|
|
let distArray = new Array(256).fill(0),
|
|
let distArray = new Array(256).fill(0),
|
|
total = 0;
|
|
total = 0;
|
|
|
|
|
|
- for (let i = 0; i < input.length; i++) {
|
|
|
|
- distArray[input[i]]++;
|
|
|
|
|
|
+ for (let i = 0; i < data.length; i++) {
|
|
|
|
+ distArray[data[i]]++;
|
|
}
|
|
}
|
|
|
|
|
|
for (let i = 0; i < distArray.length; i++) {
|
|
for (let i = 0; i < distArray.length; i++) {
|
|
if (distArray[i] > 0) {
|
|
if (distArray[i] > 0) {
|
|
- total += Math.pow(distArray[i] - input.length / 256, 2) / (input.length / 256);
|
|
|
|
|
|
+ total += Math.pow(distArray[i] - data.length / 256, 2) / (data.length / 256);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
|