与表单一起使用时,字符串参数不会自动解析为 bytes32
Posted
技术标签:
【中文标题】与表单一起使用时,字符串参数不会自动解析为 bytes32【英文标题】:String parameter not automatically parsing into bytes32 when used with form 【发布时间】:2018-03-11 11:52:15 【问题描述】:我有一个像这样的solidity函数-
function issueCertificate(address _recipient, bytes32 _certi_name)
当我使用 truffle 控制台调用该函数时,我可以使用 -
issueCertificate("0x0213e3852b8afeb08929a0f448f2f693b0fc3ebe", "random")
但是当我使用 web3 和具有相同数据的字符串格式的表单运行它时,它会给出错误-
错误:给定参数不是字节:“随机”
我想我在这里缺少一些基本的东西。请帮忙。
【问题讨论】:
【参考方案1】:如果您使用的是 web3.js 1.0 版,则可以如下所示包装字符串:
web3.utils.asciiToHex("random")
在此处查看文档:
https://web3js.readthedocs.io/en/1.0/web3-utils.html#asciitohex
【讨论】:
【参考方案2】:试试:
issueCertificate("0x0213e3852b8afeb08929a0f448f2f693b0fc3ebe", bytes32("random"))
基本上,用 bytes32() 包装字符串
编辑,错过了来自 Web3 的呼叫尝试:
issueCertificate("0x0213e3852b8afeb08929a0f448f2f693b0fc3ebe", web3.fromAscii("random"))
基本上,在 Web3 中,使用 web3.fromAscii() 包装字符串
更新:
最新版本使用:
issueCertificate("0x0213e3852b8afeb08929a0f448f2f693b0fc3ebe", web3.utils.fromAscii("random"))
【讨论】:
javascript中没有“bytes32()”。 对不起,错过了你从 web3 调用它尝试用 web3.fromAscii("random") 包装字符串 谢谢。有效。最新版本是“web3.utils.fromAscii”。 再次弃用 - 按照其他答案的建议使用 web3.utils.asciiToHex以上是关于与表单一起使用时,字符串参数不会自动解析为 bytes32的主要内容,如果未能解决你的问题,请参考以下文章