将字节3转换为坚固性字符串

发布于 2025-01-21 20:54:50 字数 347 浏览 0 评论 0原文

我需要创建函数将字节3转换为字符串。 在我的合同上,数据将保存到状态变量中。

我想为用户转换可变内容。

这是我的功能:

function convertByteToString() public view returns(string memory){
    string memory result = string(symbol);
    return result;
}

但是我会收到编译器错误:

typeerror:不允许从“ bytes3”到“字符串内存”的显式类型转换。

如何解决此错误?

I need to create function to convert byte3 to string.
On my contract, data is saved into a state variable.

I want to convert content of variable for user.

This is my function:

function convertByteToString() public view returns(string memory){
    string memory result = string(symbol);
    return result;
}

but I get a compiler error:

TypeError: Explicit type conversion not allowed from "bytes3" to "string memory".

How can this error be resolved?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

王权女流氓 2025-01-28 20:54:50

要将 bytes3 转换为字符串您必须使用abi.encodepacked(bytes3参数),此结果必须将其转换为字符串。

通过此更改您的功能:

function convertByteToString(bytes3 symbol) public view returns(string memory){
  string memory result = string(abi.encodePacked(symbol));
  return result;
}

To convert bytes3 to string you must use the abi.encodePacked(bytes3 parameter) and this result you must convert it into a string.

Change your function with this:

function convertByteToString(bytes3 symbol) public view returns(string memory){
  string memory result = string(abi.encodePacked(symbol));
  return result;
}
执妄 2025-01-28 20:54:50

只能将动态长度的字节数组(Solidity Type bytes)输入到字符串中,但是您正在传递固定长度的字节数组(solidity type bytes3)。

使用abi.encode()bytes3转换为bytes

pragma solidity ^0.8;

contract MyContract {
    bytes3 symbol = 0x455448; // hex-encoded ASCII value of "ETH"

    function convertByteToString() public view returns(string memory){
        string memory result = string(abi.encode(symbol));
        return result;
    }
}

Only a dynamic-length byte array (Solidity type bytes) can be typecasted to a string, but you're passing a fixed-length byte array (Solidity type bytes3).

Use abi.encode() to convert the bytes3 to bytes.

pragma solidity ^0.8;

contract MyContract {
    bytes3 symbol = 0x455448; // hex-encoded ASCII value of "ETH"

    function convertByteToString() public view returns(string memory){
        string memory result = string(abi.encode(symbol));
        return result;
    }
}
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文