You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将以太坊交易的Wei金额转换为十六进制格式的value参数值

以太坊交易value字段十六进制格式说明及转换方法

格式定义

你看到的0x开头的字符串是以太坊JSON-RPC接口要求的无前导零十六进制编码Wei数值,具体规则如下:

  • 必须以0x作为前缀标识十六进制格式
  • 数值部分字母大小写均可,行业通用规范为小写
  • 数值为0时固定写作0x0,不能携带多余前导零,例如不能写0x00123,需简化为0x123

你提到的0.05 Ether对应的50000000000000000 Wei,转换为十六进制后的数值为29a2241af62c0000,加上前缀就是你示例中给出的0x29a2241af62c0000,二者完全匹配。

转换方法

手动验证转换

你可以直接通过计算器的进制转换功能,把十进制的Wei数值转换为十六进制,拼接0x前缀即可。也可以直接在浏览器控制台输入以下命令快速获取结果:

// 注意大数值要加n标识为BigInt类型,避免普通数字精度丢失
const wei = 50000000000000000n;
const hexValue = '0x' + wei.toString(16);
console.log(hexValue); // 输出 0x29a2241af62c0000

生产环境工具库转换

实际开发中更推荐用以太坊生态工具库处理,避免手动转换出现精度、格式错误:

ethers.js 转换示例

import { parseEther, hexlify } from 'ethers';

// 直接输入Ether单位的数值,自动转换为符合要求的十六进制格式
const valueHex = hexlify(parseEther('0.05'));

web3.js 转换示例

import Web3 from 'web3';
const web3 = new Web3();

const valueHex = web3.utils.toHex(web3.utils.toWei('0.05', 'ether'));

业务代码适配

你可以直接把转换逻辑集成到你的原有代码中:

//Sending Ethereum to an address
sendEthButton.addEventListener('click', () => {
  // 处理value字段转换
  const transferWei = 50000000000000000n;
  const transferValueHex = '0x' + transferWei.toString(16);

  ethereum
    .request({
      method: 'eth_sendTransaction',
      params: [
        {
          from: accounts[0],
          to: '0x2f318C334780961FB129D2a6c30D0763d9a5C970',
          value: transferValueHex,
          gasPrice: '0x09184e72a000',
          gas: '0x2710',
        },
      ],
    })
    .then((txHash) => console.log(txHash))
    .catch((error) => console.error);
});

内容的提问来源于stack exchange,提问作者johnDoe

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.01 01:24:02