This commit is contained in:
wjaaaaaaat 2025-04-05 19:06:34 +01:00 committed by GitHub
commit a5d6caa7f9
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
2 changed files with 14 additions and 4 deletions

View file

@ -100,12 +100,15 @@ export function toHexFast(data) {
* // returns [10,20,30] * // returns [10,20,30]
* fromHex("0a:14:1e", "Colon"); * fromHex("0a:14:1e", "Colon");
*/ */
export function fromHex(data, delim="Auto", byteLen=2) { export function fromHex(data, delim="Auto", byteLen=2, removeNonAlphChars=false) {
if (byteLen < 1 || Math.round(byteLen) !== byteLen) if (byteLen < 1 || Math.round(byteLen) !== byteLen)
throw new OperationError("Byte length must be a positive integer"); throw new OperationError("Byte length must be a positive integer");
if (removeNonAlphChars)
data = data.replace(/[^\da-fA-F]/g, "");
if (delim !== "None") { if (delim !== "None") {
const delimRegex = delim === "Auto" ? /[^a-f\d]|0x/gi : Utils.regexRep(delim); const delimRegex = delim === "Auto" ? /\s+|0x/gi : Utils.regexRep(delim);
data = data.split(delimRegex); data = data.split(delimRegex);
} else { } else {
data = [data]; data = [data];
@ -113,6 +116,8 @@ export function fromHex(data, delim="Auto", byteLen=2) {
const output = []; const output = [];
for (let i = 0; i < data.length; i++) { for (let i = 0; i < data.length; i++) {
if (/[^a-f\d\s]/.test(data[i]))
throw new OperationError("Hex input must only contain hex digits");
for (let j = 0; j < data[i].length; j += byteLen) { for (let j = 0; j < data[i].length; j += byteLen) {
output.push(parseInt(data[i].substr(j, byteLen), 16)); output.push(parseInt(data[i].substr(j, byteLen), 16));
} }

View file

@ -30,6 +30,11 @@ class FromHex extends Operation {
name: "Delimiter", name: "Delimiter",
type: "option", type: "option",
value: FROM_HEX_DELIM_OPTIONS value: FROM_HEX_DELIM_OPTIONS
},
{
name: "Remove non-alphabet chars",
type: "boolean",
value: true
} }
]; ];
this.checks = [ this.checks = [
@ -92,8 +97,8 @@ class FromHex extends Operation {
* @returns {byteArray} * @returns {byteArray}
*/ */
run(input, args) { run(input, args) {
const delim = args[0] || "Auto"; const [delim, removeNonAlphChars] = [args[0] || "Auto", args[1]];
return fromHex(input, delim, 2); return fromHex(input, delim, 2, removeNonAlphChars);
} }
/** /**