UNPKG

@secux/app-btc

Version:
1 lines 1.07 kB
"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.encode=exports.decode=void 0,exports.decode=function(buffer,maxLength,minimal){maxLength=maxLength||4,minimal=void 0===minimal||minimal;const length=buffer.length;if(0===length)return 0;if(length>maxLength)throw new TypeError("Script number overflow");if(minimal&&!(127&buffer[length-1]||!(length<=1)&&128&buffer[length-2]))throw new Error("Non-minimally encoded script number");if(5===length){const a=buffer.readUInt32LE(0),b=buffer.readUInt8(4);return 128&b?-(4294967296*(-129&b)+a):4294967296*b+a}let result=0;for(let i=0;i<length;++i)result|=buffer[i]<<8*i;return 128&buffer[length-1]?-(result&~(128<<8*(length-1))):result},exports.encode=function(_number){let value=Math.abs(_number);const size=(i=value)>2147483647?5:i>8388607?4:i>32767?3:i>127?2:i>0?1:0;var i;const buffer=Buffer.allocUnsafe(size),negative=_number<0;for(let i=0;i<size;++i)buffer.writeUInt8(255&value,i),value>>=8;return 128&buffer[size-1]?buffer.writeUInt8(negative?128:0,size-1):negative&&(buffer[size-1]|=128),buffer};