用PHP将Wei转换为以太坊

时间:2017-08-05 23:45:40

标签: php ethereum bcmath

我正在尝试使用php和bc-math扩展将wei转换为eth。

尝试使用此功能转换它时:

function wei2eth($wei)
{
    return bcdiv($wei,1000000000000000000,18);
}

我收到以下错误:

  

警告:bcdiv(​​):在第121行的C:\ xampp \ htdocs \ test \ coindata.php中除以零

有没有人使用bc-math扩展名和bcdiv将wei转换为eth并知道,为什么我会收到此错误?

提前致谢

2 个答案:

答案 0 :(得分:4)

您的输入需要指定为带有bc-math的字符串,特别是输入大于PHP_INT_MAX。 bcdiv的签名如下:

string bcdiv ( string $left_operand , string $right_operand [, int $scale = 0 ] )

在我的64位机器上,你的功能一直工作到$wei >= PHP_INT_MAX(在我的情况下为9223372036854775807),因为PHP会正确地输入输入。

echo wei2eth('9357929650000000000');
// output 9.357929650000000000

echo wei2eth(9357929650000000000);  // 
// output 0.000000000000000000 and no warning with my env.

此外,您还需要修改bcdiv的第二个参数:

function wei2eth($wei)
{
    return bcdiv($wei,'1000000000000000000',18);
}

因为我怀疑你的系统是32位而你的第二个参数被转换为'0',因此除以零错误。

答案 1 :(得分:0)

我使用此功能:

Array (
    [1548197829] => Tuesday, 22nd Jan
    [1548284229] => Wednesday, 23rd Jan
    [1548370629] => Thursday, 24th Jan
    [1548457029] => Friday, 25th Jan
    [1548716229] => Monday, 28th Jan
    [1548802629] => Tuesday, 29th Jan
    [1548889029] => Wednesday, 30th Jan
    [1548975429] => Thursday, 31st Jan
)

您可以格式化具有任何十进制精度和值的任何加密令牌。 无需将值提供为字符串。