以太幣單位轉(zhuǎn)換
首先我們來(lái)看一下以太幣單位之間的轉(zhuǎn)換菩彬,以太幣的最小單位為wei彤叉,1個(gè)eth相當(dāng)于10的18次方wei。通常棉胀,大家也使用Gwei作為展示單位法瑟。比較常用的就是eth,Gwei和wei唁奢。
單位 | wei值 | Wei |
---|---|---|
wei | 1 | 1 wei |
Kwei (babbage) | 1e3 wei | 1,000 |
Mwei (lovelace) | 1e6 wei | 1,000,000 |
Gwei (shannon) | 1e9 wei | 1,000,000,000 |
microether (szabo) | 1e12 wei | 1,000,000,000,000 |
milliether (finney) | 1e15 wei | 1,000,000,000,000,000 |
ether | 1e18 wei | 1,000,000,000,000,000,000 |
進(jìn)制轉(zhuǎn)換
為了使用和驗(yàn)證web3的操作命令霎挟,我們先進(jìn)入geth的console控制臺(tái),在這里對(duì)具體的單位或進(jìn)制轉(zhuǎn)換進(jìn)行詳細(xì)的實(shí)例演示麻掸。
十六進(jìn)制轉(zhuǎn)十進(jìn)制
此轉(zhuǎn)換方法為web3.toDecimal(hexString)酥夭。直接在控制臺(tái)輸入一下命令進(jìn)行使用此函數(shù)進(jìn)行轉(zhuǎn)換。
> web3.toDecimal('0x16');
22
通過(guò)此函數(shù)將十六進(jìn)制的0x16轉(zhuǎn)換為十進(jìn)制的22脊奋。
十進(jìn)制轉(zhuǎn)十六進(jìn)制
轉(zhuǎn)換函數(shù):web3.fromDecimal(number)熬北。
控制臺(tái)命令及結(jié)果如下:
> web3.fromDecimal('22');
"0x16"
轉(zhuǎn)換為BigNumber類型
把給定數(shù)字或十六進(jìn)制字符串轉(zhuǎn)為 BigNumber 類型的實(shí)例。
> web3.toBigNumber('200000000000000000000001');
2.00000000000000000000001e+23
此處轉(zhuǎn)換需要注意的是BigNumber只會(huì)保留小數(shù)點(diǎn)后20位诚隙,超過(guò)20位的部分將會(huì)被截取掉讶隐。
以太幣單位轉(zhuǎn)換
上面表格中列出了以太幣之間的單位進(jìn)制,同樣可以使用web3進(jìn)行相應(yīng)的轉(zhuǎn)換久又,基本函數(shù)為web3.fromWei和web3.toWei(number, unit)巫延。
具體實(shí)例如下:
// wei轉(zhuǎn)換為ether
> web3.fromWei('22000000000000', 'ether');
"0.000022"
// wei轉(zhuǎn)換為kwei
> web3.fromWei('1000','kwei')
"1"
// wei轉(zhuǎn)換為gwei
> web3.fromWei('1000000000','gwei')
"1"
// ether轉(zhuǎn)換為wei
> web3.toWei('1','ether')
"1000000000000000000"
其他的相關(guān)轉(zhuǎn)換大家可自行嘗試,下面列出相應(yīng)的轉(zhuǎn)換種類:
- kwei/ada
- mwei/babbage
- gwei/shannon
- szabo
- finney
- ether
- kether/grand/einstein
- mether
- gether
- tether
通過(guò)上面的函數(shù)地消,在交易的過(guò)程中我們就可以隨意的單位進(jìn)行發(fā)送交易炉峰,而不必使用最小單位wei。
> eth.sendTransaction({from:eth.coinbase,to:"0x2bda4364bb076187f0ef0067a61ccb95d636e383",value:web3.toWei(1,"ether")})
通過(guò)查詢余額的方法脉执,我們也可以看出區(qū)塊鏈中存儲(chǔ)這些數(shù)據(jù)的單位為wei疼阔。
> web3.eth.getBalance(eth.coinbase)
267999999999999999999
代幣中的單位
在編寫ERC-20的代幣合約時(shí)我們可以指定代幣的單位,比如:
uint8 public decimals;
這里就指定了代幣單位精確到小數(shù)點(diǎn)后幾位半夷。比如精確到小數(shù)點(diǎn)后3位婆廊,那么1個(gè)代幣存儲(chǔ)時(shí)就是1000個(gè)最小單位的值。