如何在 Remix 中输入 bytes4 类型的参数?

How do I input the parameter with bytes4 type in Remix?

我创建了一个简单的合约,如图所示。当我部署它并尝试调用 get 函数时,我发现我无法输入正确的 bytes4 类型的参数。无论我使用 0x01,11,"11"...,它总是告诉这样的错误编码参数。

transact to Test.get errored: Error encoding arguments: Error: invalid arrayify value (argument="value" value="11" code=INVALID_ARGUMENT version=bytes/5.5.0)

transact to Test.get errored: Error encoding arguments: Error: invalid arrayify value (argument="value" value="0x6162" code=INVALID_ARGUMENT version=bytes/5.5.0)

我该怎么办?

pragma solidity ^0.4.0;

contract Test {
    mapping (bytes8 => string) public  map;
    function setMapping() public {
        map["k1"] = "yes";
    }
    function get(bytes4 a) public {
        
    }
}

您可以输入十六进制形式的字节,不可分割。由于 bytes4 是四个字节的定长数组,因此您始终需要恰好输入 4 个字节(8 个十六进制字符)。

0x12345678
  • 12是第一个字节
  • 34是第二个字节
  • 等...

注意:如果要输入空字节,可以在空字节的位置使用00。示例:0x00340078(第 1 个和第 3 个字节为空)。