Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- class Bytearray extends Array {
- constructor () {
- super()
- this.offset = 0
- this.INSPECT_MAX_BYTES = 8
- }
- writeUIntLE (value, byteLength) {
- value = +value
- let offset = this.offset
- offset = offset >>> 0
- byteLength = byteLength >>> 0
- var mul = 1
- var i = 0
- this[offset] = value
- while (++i < byteLength && (mul *= 0x100)) { this[offset + i] = (value / mul) >>> 0 }
- return this.offset += byteLength
- }
- writeUIntBE (value, byteLength) {
- value = +value
- let offset = this.offset
- offset = offset >>> 0
- byteLength = byteLength >>> 0
- var i = byteLength - 1
- var mul = 1
- this[offset + i] = value
- while (--i >= 0 && (mul *= 0x100)) { this[offset + i] = (value / mul) >>> 0 }
- return this.offset += byteLength
- }
- writeUInt8 (value) {
- value = +value
- let offset = this.offset
- offset = offset >>> 0
- this[offset] = value
- return this.offset += 1
- }
- writeUInt16LE (value) {
- value = +value
- let offset = this.offset
- offset = offset >>> 0
- this[offset] = value
- this[offset + 1] = (value >>> 8)
- return this.offset += 2
- }
- writeUInt16BE (value) {
- value = +value
- let offset = this.offset
- offset = offset >>> 0
- this[offset] = (value >>> 8)
- this[offset + 1] = value
- return this.offset += 2
- }
- writeUInt32LE (value) {
- value = +value
- let offset = this.offset
- offset = offset >>> 0
- this[offset + 3] = (value >>> 24)
- this[offset + 2] = (value >>> 16)
- this[offset + 1] = (value >>> 8)
- this[offset] = value
- return this.offset += 4
- }
- writeUInt32BE (value) {
- value = +value
- let offset = this.offset
- offset = offset >>> 0
- this[offset] = (value >>> 24)
- this[offset + 1] = (value >>> 16)
- this[offset + 2] = (value >>> 8)
- this[offset + 3] = value
- return this.offset += 4
- }
- writeIntLE (value, byteLength) {
- value = +value
- let offset = this.offset
- offset = offset >>> 0
- var i = 0
- var mul = 1
- var sub = 0
- this[offset] = value
- while (++i < byteLength && (mul *= 0x100)) {
- if (value < 0 && sub === 0 && this[offset + i - 1] !== 0) { sub = 1 }
- this[offset + i] = ((value / mul) >> 0) - sub
- }
- return this.offset += byteLength
- }
- writeIntBE (value, byteLength) {
- value = +value
- let offset = this.offset
- offset = offset >>> 0
- var i = byteLength - 1
- var mul = 1
- var sub = 0
- this[offset + i] = value
- while (--i >= 0 && (mul *= 0x100)) {
- if (value < 0 && sub === 0 && this[offset + i + 1] !== 0) { sub = 1 }
- this[offset + i] = ((value / mul) >> 0) - sub
- }
- return this.offset += byteLength
- }
- writeInt8 (value) {
- value = +value
- let offset = this.offset
- offset = offset >>> 0
- this[offset] = value
- return this.offset += 1
- }
- writeInt16LE (value) {
- value = +value
- let offset = this.offset
- offset = offset >>> 0
- this[offset] = value
- this[offset + 1] = (value >>> 8)
- return this.offset += 2
- }
- writeInt16BE (value) {
- value = +value
- let offset = this.offset
- offset = offset >>> 0
- this[offset] = (value >>> 8)
- this[offset + 1] = value
- return this.offset += 2
- }
- writeInt32LE (value) {
- value = +value
- let offset = this.offset
- offset = offset >>> 0
- this[offset] = value
- this[offset + 1] = (value >>> 8)
- this[offset + 2] = (value >>> 16)
- this[offset + 3] = (value >>> 24)
- return this.offset += 4
- }
- writeInt32BE (value, noAssert) {
- value = +value
- let offset = this.offset
- offset = offset >>> 0
- this[offset] = (value >>> 24)
- this[offset + 1] = (value >>> 16)
- this[offset + 2] = (value >>> 8)
- this[offset + 3] = value
- return this.offset += 4
- }
- append (Buf) {
- for (let i of Buf) {
- this.push(i)
- this.offset++
- }
- return this.offset
- }
- write (...args) {
- // cheating again xd
- let encoded = Buffer.alloc(args[0].length)
- encoded.write.apply(encoded, args)
- this.append(encoded)
- }
- toString (...args) {
- // cheating a bit xd
- return Buffer.prototype.toString.apply(Buffer.from(this), args)
- }
- inspect () {
- var str = ''
- var max = this.INSPECT_MAX_BYTES
- str = this.toString('hex', 0, max).replace(/(.{2})/g, '$1 ').trim()
- if (this.length > max) { str += ' ... ' }
- return `<${this.constructor.name} ${str}>`
- }
- }
- module.exports = Bytearray
Add Comment
Please, Sign In to add comment