首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何比较两种bytes32?

如何比较两种bytes32?
EN

Ethereum用户
提问于 2019-02-18 16:58:55
回答 2查看 6.1K关注 0票数 6

在我读到使用字节更便宜之前,我一直在使用字符串。现在,我将字符串更改为bytes32,但不知道如何比较它们。我需要在require语句中检查两个bytes32是否相等。我该怎么做呢?使用普通的==进行还原并使用keccak256对其进行覆盖,表示从bytes32到请求的字节之间的隐式转换是无效的。

EN

回答 2

Ethereum用户

回答已采纳

发布于 2019-02-18 18:05:49

将两种bytes32进行比较是可能的。考虑一下这个简单的合同:

代码语言:javascript
复制
pragma solidity 0.5.4;

contract Test {
    bytes32 public constant bytes32_ = "Hello World!";
    bytes32 public constant anotherBytes32 = "Hello World!";

    function areTheyEqual() public pure returns(bool) {
        return (bytes32_ == anotherBytes32);
    }
}

本合同将编译,并将返回正确的答案(真)。你能把你的代码和问题一起贴出来吗?问题是在其他地方,而不是在比较本身。

票数 10
EN

Ethereum用户

发布于 2019-12-31 14:38:57

如果您有多个bytes来主持,您可以使用:

keccak256(abi.encodePacked(<bytes>, >bytes>, ...))

代码语言:javascript
复制
pragma solidity 0.5.12;

contract Test {
    bytes32 public constant bytes32_1 = "Hello";
    bytes32 public constant bytes32_2 = "World!";

    bytes32 public constant anotherBytes32_1 = "Hello";
    bytes32 public constant anotherBytes32_2 = "World";

    function areTheyEqual() public pure returns(bool) {
        return keccak256(abi.encodePacked(bytes32_1, bytes32_2)) == 
               keccak256(abi.encodePacked(anotherBytes32_1, anotherBytes32_2));
    }
}
票数 1
EN
页面原文内容由Ethereum提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://ethereum.stackexchange.com/questions/67257

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档