Contract-Development

在js中將十六進制64轉換為十進制

  • March 15, 2022

我正在使用 ERC20 totalsupply 方法獲取合約的totalSupply。

我正在嘗試將返回的十六進制轉換為十進制。

我收到:

var totalSupply = "0x00000000000000000000000000000000000000000000006c6b935b8bbd400000";

然後我在做:

console.log(parseInt(totalSupply, 16))

但是我得到一個科學數字,我怎樣才能顯示正常數字?我是否正確轉換它?

您正在正確解析數字。您的問題實際上是“如何將 JavaScript 中的數字轉換為沒有科學記數法的字元串?”

BigNumber 庫在這方面做得很好,它包含在web3.js

> var totalSupply = '0x00000000000000000000000000000000000000000000006c6b935b8bbd400000';
undefined
> web3.toBigNumber(totalSupply).toFixed()
"2000000000000000000000"

Web3 不斷變化。今天可以通過以下方式完成:

parseInt(web3.eth.abi.decodeParameter("uint256", totalSupply)) / 10 ** 18

引用自:https://ethereum.stackexchange.com/questions/36908