123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101 |
- 'use strict';
- // selected so (BASE - 1) * 0x100000000 + 0xffffffff is a safe integer
- var BASE = 1000000;
- function readInt8(buffer) {
- var high = buffer.readInt32BE(0);
- var low = buffer.readUInt32BE(4);
- var sign = '';
- if (high < 0) {
- high = ~high + (low === 0);
- low = (~low + 1) >>> 0;
- sign = '-';
- }
- var result = '';
- var carry;
- var t;
- var digits;
- var pad;
- var l;
- var i;
- {
- carry = high % BASE;
- high = high / BASE >>> 0;
- t = 0x100000000 * carry + low;
- low = t / BASE >>> 0;
- digits = '' + (t - BASE * low);
- if (low === 0 && high === 0) {
- return sign + digits + result;
- }
- pad = '';
- l = 6 - digits.length;
- for (i = 0; i < l; i++) {
- pad += '0';
- }
- result = pad + digits + result;
- }
- {
- carry = high % BASE;
- high = high / BASE >>> 0;
- t = 0x100000000 * carry + low;
- low = t / BASE >>> 0;
- digits = '' + (t - BASE * low);
- if (low === 0 && high === 0) {
- return sign + digits + result;
- }
- pad = '';
- l = 6 - digits.length;
- for (i = 0; i < l; i++) {
- pad += '0';
- }
- result = pad + digits + result;
- }
- {
- carry = high % BASE;
- high = high / BASE >>> 0;
- t = 0x100000000 * carry + low;
- low = t / BASE >>> 0;
- digits = '' + (t - BASE * low);
- if (low === 0 && high === 0) {
- return sign + digits + result;
- }
- pad = '';
- l = 6 - digits.length;
- for (i = 0; i < l; i++) {
- pad += '0';
- }
- result = pad + digits + result;
- }
- {
- carry = high % BASE;
- t = 0x100000000 * carry + low;
- digits = '' + t % BASE;
- return sign + digits + result;
- }
- }
- module.exports = readInt8;
|