| 2639 | }; |
| 2640 | |
| 2641 | function hexWrite (buf, string, offset, length) { |
| 2642 | offset = Number(offset) || 0; |
| 2643 | var remaining = buf.length - offset; |
| 2644 | if (!length) { |
| 2645 | length = remaining; |
| 2646 | } else { |
| 2647 | length = Number(length); |
| 2648 | if (length > remaining) { |
| 2649 | length = remaining; |
| 2650 | } |
| 2651 | } |
| 2652 | |
| 2653 | // must be an even number of digits |
| 2654 | var strLen = string.length; |
| 2655 | if (strLen % 2 !== 0) throw new TypeError('Invalid hex string') |
| 2656 | |
| 2657 | if (length > strLen / 2) { |
| 2658 | length = strLen / 2; |
| 2659 | } |
| 2660 | for (var i = 0; i < length; ++i) { |
| 2661 | var parsed = parseInt(string.substr(i * 2, 2), 16); |
| 2662 | if (isNaN(parsed)) return i |
| 2663 | buf[offset + i] = parsed; |
| 2664 | } |
| 2665 | return i |
| 2666 | } |
| 2667 | |
| 2668 | function utf8Write (buf, string, offset, length) { |
| 2669 | return blitBuffer(utf8ToBytes(string, buf.length - offset), buf, offset, length) |