@mrhiden/cstruct
Version:
For packing and unpacking bytes (C like structures) in/from Buffer based on Object/Array type for parsing.
38 lines (37 loc) • 1.48 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.hexToBufferEx = exports.removeNonHex = exports.printBuffer = exports.bufferToHex = exports.hexToBuffer = void 0;
function hexToBuffer(hex) {
hex = hex.replace(/0x/g, "");
hex = hex.replace(/[\n _]/g, "");
return Buffer.from(hex, "hex");
}
exports.hexToBuffer = hexToBuffer;
function bufferToHex(buffer) {
return buffer.toString("hex");
}
exports.bufferToHex = bufferToHex;
function printBuffer(buffer) {
const hex = buffer.toString("hex");
console.log(hex);
return hex;
}
exports.printBuffer = printBuffer;
function removeNonHex(dirtyHex) {
return dirtyHex
// Replace kind of formatting, label:HEX -> HEX
// "(Ab.length:03) (Ab:[])[{a:01,b:02},{a:03,b:04},{a:05,b:06}]" -> "(03) ([])[{01,02},{03,04},{05,06}]"
// "(Ab:[03])[{a:01,b:02},{a:03,b:04},{a:05,b:06}]" -> "([03])[{01,02},{03,04},{05,06}]"
.replace(/[\w.]+?:/g, '')
// Replace all non-HEX characters
// "(03) ([])[{01,02},{03,04},{05,06}]" -> "03010203040506"
// "([03])[{01,02},{03,04},{05,06}]" -> "03010203040506"
// "12 34 5678 90ab cdef ghijk klmn oprs tquw xyzw !@#$ %^&* ()[]{}<>" -> "1234567890abcdef"
.replace(/[^0-9a-fA-F]/g, '');
}
exports.removeNonHex = removeNonHex;
function hexToBufferEx(dirtyHex) {
const hex = removeNonHex(dirtyHex);
return Buffer.from(hex, "hex");
}
exports.hexToBufferEx = hexToBufferEx;