2017-11-22 10 views
-2

大きな整数をjavascriptの8進表記に変換する方法をお探しです。JavaScriptから8進数への大きな整数

標準12457472939742322323232.toString(8)は切り捨てられ、16452431526650000000000000のようなものが返されます。これを行うための組み込みの方法がわかっているか、何かを一緒にハックする必要がありますか?

(注:これらの完全に作られる番号)

EDIT: [OK]を、ので、私は、しかしはっきりと数が大きすぎる進数を表し、巨大な16進数文字列は、私はparseInt(hexStr, 16).toString(8)を使用しようとしていた持っています標準的なJS番号に収まる。だから、この16進数の文字列を基数8のBigNumberにどうやって入れることができますか?

+0

この数字は、JSによって直接サポートされていない数字です。計算上の問題があります。次のコードを試してください: 'var a = 12457472939742322323232; var b = a; b-; console.log(a === b) ' – Rajesh

+1

整数はどこから来ますか?どの8進数が使われていますか? Number型には大きすぎるため、大きな数値を持つことはできません。文字列またはカスタムオブジェクトにする必要があります。 – JJJ

+0

@JJJ私の編集を見てください!助けてくれてありがとう – Alex

答えて

1

それは六角として出始めているので、あなたは10月に、その後の文字がバイナリ文字に変換することができます任意の2電力塩基間

function hex2oct(hex) { 
 

 
\t const pad0s = (str, bits) => str.padStart(Math.ceil(str.length/bits) * bits, "0"); 
 

 
\t const binary = pad0s(hex.split("").map(char => pad0s(parseInt(char, 16).toString(2), 4)).join(""), 3); 
 

 
\t let octal = ""; 
 

 
\t for (let i = 0; i < binary.length; i += 3) 
 
\t \t octal += parseInt(binary.slice(i, i + 3), 2).toString(8); 
 

 
\t return octal; 
 

 
} 
 

 
console.log(hex2oct("2A3522A842CDE4D6F20"));

変換はかなり自明行うことができます。他の拠点では、大きな番号のライブラリを使用する方が簡単です。