| 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 |
| } |