首页 > 解决方案 > 在 JavaScript 中将数字转换为特定大小的整数(复制 Solidity 功能)

问题描述

我正在尝试在 JS/web3.js 中复制以下 Solidity 视图函数

function addPhase(
    uint16 _phase,
    uint64 _originalId
  )
    public
    view
    returns (uint80)
  {
    return uint80(uint256(_phase) << 64 | _originalId);
  }

我知道<<| 位运算符直接转换为 JavaScript,但我似乎无法通过转换为整数部分得到正确的结果,似乎 JavaScript 并不容易支持这一点。

例如,在solidity 函数中传入参数(1,5132)给出18446744073709556748的结果

如何在 Javascript 中复制这个公式?这是我的起点(没有给出正确的回应)

console.log(1 << 64 | 5132)

标签: javascriptnode.jssolidityweb3

解决方案


推荐阅读