| function byteLength (string) { | |
| return string.length * 2 | |
| } | |
| function toString (buffer) { | |
| const len = buffer.byteLength | |
| let result = '' | |
| for (let i = 0; i < len - 1; i += 2) { | |
| result += String.fromCharCode(buffer[i] + (buffer[i + 1] * 256)) | |
| } | |
| return result | |
| } | |
| function write (buffer, string, offset = 0, length = byteLength(string)) { | |
| const len = Math.min(length, buffer.byteLength - offset) | |
| let units = len | |
| for (let i = 0; i < string.length; ++i) { | |
| if ((units -= 2) < 0) break | |
| const c = string.charCodeAt(i) | |
| const hi = c >> 8 | |
| const lo = c % 256 | |
| buffer[offset + i * 2] = lo | |
| buffer[offset + i * 2 + 1] = hi | |
| } | |
| return len | |
| } | |
| module.exports = { | |
| byteLength, | |
| toString, | |
| write | |
| } | |