diff --git a/lib/unpackbuffer.js b/lib/unpackbuffer.js index 706fcd8..2fdbfea 100644 --- a/lib/unpackbuffer.js +++ b/lib/unpackbuffer.js @@ -22,27 +22,31 @@ module.exports.addUnpack = function(Buffer) { var arg = format[current_arg]; switch (arg) { - case 'C': - data.push(this[offset++]); + case 'C': + data.push(this.readUInt8(offset++)); + break; + case 'c': + data.push(this.readInt8(offset++)); break; case 'S': - case 's': //TODO: 16bit signed unpack - var b1 = this[offset++]; - var b2 = this[offset++]; - data.push(b2*256+b1); + data.push(this.readUInt16LE(offset)); + offset += 2; + break; + case 's': + data.push(this.readInt16LE(offset)); + offset += 2; break; case 'n': - var b1 = this[offset++]; - var b2 = this[offset++]; - data.push(b1*256+b2); + data.push(this.readUInt16BE(offset)); + offset += 2; break; case 'L': - case 'l': //TODO: 32bit signed unpack - var b1 = this[offset++]; - var b2 = this[offset++]; - var b3 = this[offset++]; - var b4 = this[offset++]; - data.push(((b4*256+b3)*256 + b2)*256 + b1); + data.push(this.readUInt32LE(offset)); + offset += 4; + break; + case 'l': + data.push(this.readInt32LE(offset)); + offset += 4; break; case 'x': offset++;