1234567891011121314151617181920212223242526272829303132333435363738394041424344454647 |
- module.exports = BinaryReader;
- function BinaryReader(buffer, isBigEndian) {
- this.buffer = buffer;
- this.position = 0;
- this.isBigEndian = isBigEndian || false;
- }
- function _read(readLE, readBE, size) {
- return function () {
- var value;
- if (this.isBigEndian)
- value = readBE.call(this.buffer, this.position);
- else
- value = readLE.call(this.buffer, this.position);
- this.position += size;
- return value;
- };
- }
- BinaryReader.prototype.readUInt8 = _read(Buffer.prototype.readUInt8, Buffer.prototype.readUInt8, 1);
- BinaryReader.prototype.readUInt16 = _read(Buffer.prototype.readUInt16LE, Buffer.prototype.readUInt16BE, 2);
- BinaryReader.prototype.readUInt32 = _read(Buffer.prototype.readUInt32LE, Buffer.prototype.readUInt32BE, 4);
- BinaryReader.prototype.readInt8 = _read(Buffer.prototype.readInt8, Buffer.prototype.readInt8, 1);
- BinaryReader.prototype.readInt16 = _read(Buffer.prototype.readInt16LE, Buffer.prototype.readInt16BE, 2);
- BinaryReader.prototype.readInt32 = _read(Buffer.prototype.readInt32LE, Buffer.prototype.readInt32BE, 4);
- BinaryReader.prototype.readFloat = _read(Buffer.prototype.readFloatLE, Buffer.prototype.readFloatBE, 4);
- BinaryReader.prototype.readDouble = _read(Buffer.prototype.readDoubleLE, Buffer.prototype.readDoubleBE, 8);
- BinaryReader.prototype.readVarInt = function () {
- var nextByte,
- result = 0,
- bytesRead = 0;
- do {
- nextByte = this.buffer[this.position + bytesRead];
- result += (nextByte & 0x7F) << (7 * bytesRead);
- bytesRead++;
- } while (nextByte >= 0x80);
- this.position += bytesRead;
- return result;
- };
|