任何人都可以解释ENS解析器如何将内存转换为地址以坚固性地址类型
当我是Wangt将字节转换为地址时,我经常使用以下功能。
function bytesToAddress(bytes memory byte) public pure returns (address addr) {
assembly {
addr := mload(add(byte, 20))
}
}
但是我发现ENS公共解析器具有不同的写作守则,
function bytesToAddress(bytes memory b) internal pure returns(address payable a) {
require(b.length == 20);
assembly {
a := div(mload(add(b, 32)), exp(256, 12))
}
}
因此为什么它会增加Div和Exp(256,12),实际上发生了什么。 0x3E8DC215A6E404A7BA811DE5DA3FF2A809AE2AAE9AE2
是Ropsten Testnet中的ENS公共分辨率地址。
when I am wangt to convert bytes memory to address, I often used the below function.
function bytesToAddress(bytes memory byte) public pure returns (address addr) {
assembly {
addr := mload(add(byte, 20))
}
}
But I found the ens public resolver has different code of writing
function bytesToAddress(bytes memory b) internal pure returns(address payable a) {
require(b.length == 20);
assembly {
a := div(mload(add(b, 32)), exp(256, 12))
}
}
So why it add div and exp(256, 12),what actually happening .0x3E8Dc215A6E404A7Ba811DE5Da3ff2A809AE94E2
is ens public resolver address in ropsten testnet.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论