是否有一种简单的方法将bytes32 (例如0xca35b7d915458ef540ade6068dfe2f44e8fa733c )转换为地址?
bytes32 data = "0xca35b7d915458ef540ade6068dfe2f44e8fa733c";我试着用address(data)来制作它,但没有成功。我也见过这里的解决方案,但这只适用于bytes,而不是bytes32。
下面是我需要的坚实功能:
function bytes32ToAddress(bytes32 input) public pure returns(address){
// convert input to address
return ...;
}发布于 2018-06-10 19:59:25
这个很好用。也许您实际上在代码中包含了单引号?如果是的话,就把它们移走。
pragma solidity ^0.4.24;
contract Test {
function test(bytes32 data) external pure returns (address) {
return address(data);
}
}发布于 2019-03-14 18:38:05
对于稳固性0.5.x,您可以使用
pragma solidity ^0.5.0;
contract Test {
function test(bytes32 data) external pure returns (address) {
return address(uint160(uint256(data)));
}
}首先将bytes32转换为uint256,后转换为uint160(20字节),最后转换为addres,这使用大endian。
如果你想使用小终端,你应该使用address(uint160(bytes20(b)))
有关更多信息:坚固医生
发布于 2018-12-04 19:12:59
assembly {
mstore(0, hash)
addr := mload(0)
}下面是一个如何以这种方式将公钥转换为地址的示例:可靠地从公钥中获取地址
https://ethereum.stackexchange.com/questions/50914
复制相似问题