Adds Octal functions

- To Octal
- From Octal
This commit is contained in:
Matt C 2017-03-14 21:26:10 +00:00
parent 94ea086e05
commit b8ce10ae96
4 changed files with 96 additions and 1 deletions

View file

@ -35,6 +35,8 @@ var Categories = [
"From Decimal", "From Decimal",
"To Binary", "To Binary",
"From Binary", "From Binary",
"To Octal",
"From Octal",
"To Base64", "To Base64",
"From Base64", "From Base64",
"Show Base64 offsets", "Show Base64 offsets",

View file

@ -392,7 +392,7 @@ var OperationConfig = {
] ]
}, },
"From Hex": { "From Hex": {
description: "Converts a hexadecimal byte string back into a its raw value.<br><br>e.g. <code>ce 93 ce b5 ce b9 ce ac 20 cf 83 ce bf cf 85 0a</code> becomes the UTF-8 encoded string <code>Γειά σου</code>", description: "Converts a hexadecimal byte string back into its raw value.<br><br>e.g. <code>ce 93 ce b5 ce b9 ce ac 20 cf 83 ce bf cf 85 0a</code> becomes the UTF-8 encoded string <code>Γειά σου</code>",
run: ByteRepr.runFromHex, run: ByteRepr.runFromHex,
highlight: ByteRepr.highlightFrom, highlight: ByteRepr.highlightFrom,
highlightReverse: ByteRepr.highlightTo, highlightReverse: ByteRepr.highlightTo,
@ -421,6 +421,36 @@ var OperationConfig = {
} }
] ]
}, },
"From Octal": {
description: "Converts a octal byte string back into its raw value.<br><br>e.g. <code>316 223 316 265 316 271 316 254 40 317 203 316 277 317 205</code> becomes the UTF-8 encoded string <code>Γειά σου</code>",
run: ByteRepr.runFromOct,
highlight: false,
highlightReverse: false,
inputType: "string",
outputType: "byteArray",
args: [
{
name: "Delimiter",
type: "option",
value: ByteRepr.OCT_DELIM_OPTIONS
}
]
},
"To Octal": {
description: "Converts the input string to octal bytes separated by the specified delimiter.<br><br>e.g. The UTF-8 encoded string <code>Γειά σου</code> becomes <code>316 223 316 265 316 271 316 254 40 317 203 316 277 317 205</code>",
run: ByteRepr.runToOct,
highlight: false,
highlightReverse: false,
inputType: "byteArray",
outputType: "string",
args: [
{
name: "Delimiter",
type: "option",
value: ByteRepr.OCT_DELIM_OPTIONS
}
]
},
"From Charcode": { "From Charcode": {
description: "Converts unicode character codes back into text.<br><br>e.g. <code>0393 03b5 03b9 03ac 20 03c3 03bf 03c5</code> becomes <code>Γειά σου</code>", description: "Converts unicode character codes back into text.<br><br>e.g. <code>0393 03b5 03b9 03ac 20 03c3 03bf 03c5</code> becomes <code>Γειά σου</code>",
run: ByteRepr.runFromCharcode, run: ByteRepr.runFromCharcode,

View file

@ -828,6 +828,38 @@ var Utils = {
}, },
/**
* Convert an byte array into a octal string
*
* @author Matt C [matt@artemisbot.pw]
* @param {byteArray} data
* @param {string} [delim]
* @returns {string}
*
*/
toOct: function(data, delim) {
var output = "";
delim = delim || "Space";
data.map(val => output += (parseInt(Utils.bin(val), 2).toString(8) + delim));
return output.slice(0, -delim.length);
},
/**
* Convert an Octal string into a byte array.
*
* @author Matt C [matt@artemisbot.pw]
* @param {string} data
* @param {string} [delim]
* @returns {byteArray}
*
*/
fromOct: function(data, delim) {
delim = delim || "Space";
return data.split(delim).map(val => parseInt(val, 8));
},
/** /**
* Parses CSV data and returns it as a two dimensional array or strings. * Parses CSV data and returns it as a two dimensional array or strings.
* *

View file

@ -21,6 +21,11 @@ var ByteRepr = {
* @default * @default
*/ */
HEX_DELIM_OPTIONS: ["Space", "Comma", "Semi-colon", "Colon", "Line feed", "CRLF", "0x", "\\x", "None"], HEX_DELIM_OPTIONS: ["Space", "Comma", "Semi-colon", "Colon", "Line feed", "CRLF", "0x", "\\x", "None"],
/**
* @constant
* @default
*/
OCT_DELIM_OPTIONS: ["Space", "Comma", "Semi-colon", "Colon", "Line feed", "CRLF"],
/** /**
* @constant * @constant
* @default * @default
@ -53,6 +58,32 @@ var ByteRepr = {
}, },
/**
* To Oct operation.
*
* @author Matt C [matt@artemisbot.pw]
* @param {byteArray} input
* @param {Object[]} args
* @returns {string}
*/
runToOct: function(input, args) {
var delim = Utils.charRep[args[0] || "Space"];
return Utils.toOct(input, delim, 2);
},
/**
* From Oct operation.
*
* @author Matt C [matt@artemisbot.pw]
* @param {string} input
* @param {Object[]} args
* @returns {byteArray}
*/
runFromOct: function(input, args) {
var delim = Utils.charRep[args[0] || "Space"];
return Utils.fromOct(input, delim);
},
/** /**
* @constant * @constant
* @default * @default