| 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) { | |
| const len = buffer.byteLength | |
| 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[i * 2] = lo | |
| buffer[i * 2 + 1] = hi | |
| } | |
| return len | |
| } | |
| module.exports = { | |
| byteLength, | |
| toString, | |
| write | |
| } | |