LookAtMySuitBot/js/node_modules/uint4/index.js

45 lines
1.4 KiB
JavaScript

var readUInt4BE = function(buffer, cursor) {
if(cursor % 1)
return buffer.readUInt8(Math.floor(cursor)) & 15;
else
return buffer.readUInt8(cursor) >> 4;
};
var writeUInt4BE = function(buffer, value, cursor) {
if(value >= 16)
throw(new Error('value is out of bounds'));
var byteLoc = Math.floor(cursor);
if(cursor % 1) // Second half byte
buffer.writeUInt8((readUInt4BE(buffer, byteLoc) << 4 | value), byteLoc);
else // First half byte
buffer.writeUInt8((value << 4 | readUInt4BE(buffer, cursor)), byteLoc);
};
var readUInt4LE = function(buffer, cursor) {
if(cursor % 1)
return buffer.readUInt8(Math.floor(cursor)) >> 4;
else
return buffer.readUInt8(cursor) & 15;
};
var writeUInt4LE = function(buffer, value, cursor) {
if(value >= 16)
throw(new Error('value is out of bounds'));
var byteLoc = Math.floor(cursor);
if(cursor % 1)
buffer.writeUInt8((value << 4 | readUInt4LE(buffer, Math.floor(cursor))), byteLoc);
else
buffer.writeUInt8((readUInt4LE(buffer, byteLoc) << 4 | value), byteLoc);
};
module.exports.read = readUInt4BE;
module.exports.readUInt4 = readUInt4BE;
module.exports.write = writeUInt4BE;
module.exports.writeUInt4 = writeUInt4BE;
module.exports.readUInt4BE = readUInt4BE;
module.exports.writeUInt4BE = writeUInt4BE;
module.exports.readUInt4LE = readUInt4LE;
module.exports.writeUInt4LE = writeUInt4LE;