UNPKG

smppjs

Version:
56 lines 2 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.Cstring = void 0; class Cstring { static write({ buffer, value, offset, encoding = 'ascii', setLength = false, }) { const newBuffer = buffer; let valueBuffer; if (typeof value === 'string') { valueBuffer = Buffer.from(value, encoding); } else { valueBuffer = value; } if (setLength) { buffer.writeUInt8(valueBuffer.length, offset++); } valueBuffer.copy(buffer, offset); newBuffer[offset + valueBuffer.length] = 0; return newBuffer; } static size(value) { if (typeof value === 'number') { return value.toString().length + 1; } return value.length + 1; } static read({ buffer, offset, encoding = 'ascii', length }) { if (length && length > 0) { return buffer.toString(encoding, offset, offset + length); } const MAX_SCAN = 16; let scanLength = 0; while (scanLength < MAX_SCAN && offset + scanLength < buffer.length && buffer[offset + scanLength]) { scanLength++; } if (scanLength < MAX_SCAN || offset + scanLength >= buffer.length) { return buffer.toString(encoding, offset, offset + scanLength); } const nullIndex = buffer.indexOf(0, offset); const endIndex = nullIndex === -1 ? buffer.length : nullIndex; return buffer.toString(encoding, offset, endIndex); } static convertToUtf16be(value) { if (typeof value === 'string') { value = Buffer.from(value, 'ucs2'); } const utf16beBuffer = Buffer.alloc(value.length); for (let i = 0; i < value.length; i += 2) { utf16beBuffer[i] = value[i + 1]; utf16beBuffer[i + 1] = value[i]; } return utf16beBuffer; } } exports.Cstring = Cstring; //# sourceMappingURL=cstring.js.map