ECMA Section 8.5 - Numbers
주 누구의 크기입니다 더 큰 53 2 이상이 (숫자 형식에서 표현할 수없는 모든 긍정과 부정의 정수 참으로, 정수 0이 두 가지 표현이있다, +0 및 -0).
자바 스크립트는 64 비트 부호있는/부호를 읽을 다음 코드를 사용할 수 있습니다, 느릅 나무 만 최대 2 53, 또는 당신을 위해 괜찮아요 경우 9007199254740992. 정확하게 숫자를 나타낼 수있는 의미, 내부적으로 64 개 비트 부동 번호를 사용 64 비트 부동 소수점으로 값 int :
function readUInt64(buff, offset) {
return buff.readInt32LE(offset) + 0x100000000*buff.readUInt32LE(offset + 4);
}
function readInt64(buff, offset) {
var word0 = buff.readUInt32LE(offset);
var word1 = buff.readUInt32LE(offset+4);
if (!(word1 & 0x80000000))
return word0 + 0x100000000*word1;
return -((((~word1)>>>0) * 0x100000000) + ((~word0)>>>0) + 1);
}
당신이 정확한 표현을해야하는 경우 - 사용 bignumber.js 라이브러리
function readUInt64(buff, offset) {
var word0 = buff.readUInt32LE(offset);
var word1 = buff.readUInt32LE(offset+4);
return new BigNumber(word0).plus(new BigNumber(word1).times(0x100000000));
}