Solidity 问题“TypeError:不允许从“uint256”进行显式类型转换”到“地址”

发布于 2025-01-14 23:45:07 字数 462 浏览 0 评论 0原文

问题出在最后一行代码

function bytesToAddress(bytes memory b) public view returns (address) {
    uint256 result = 0;
    for (uint256 i = b.length - 1; i + 1 > 0; i--) {
        uint256 c = uint256(uint8(b[i]));

        uint256 to_inc = c * (16**((b.length - i - 1) * 2));
        result += to_inc;
    }
    return address(result);

无法弄清楚如何使该功能正常工作。任何帮助表示赞赏

problem is in the last line of code

function bytesToAddress(bytes memory b) public view returns (address) {
    uint256 result = 0;
    for (uint256 i = b.length - 1; i + 1 > 0; i--) {
        uint256 c = uint256(uint8(b[i]));

        uint256 to_inc = c * (16**((b.length - i - 1) * 2));
        result += to_inc;
    }
    return address(result);

Can't figure out how to make this function work properly. Any help is appreciated

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

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

发布评论

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

评论(1

凌乱心跳 2025-01-21 23:45:07
function bytesToAddress(bytes memory b) public view returns (address) {
  uint result = 0;
  for (uint i = 0; i < b.length; i++) {
      uint c = uint(b[i]);
      if (c >= 48 && c <= 57) {
          result = result * 16 + (c - 48);
      }
      if(c >= 65 && c<= 90) {
          result = result * 16 + (c - 55);
      }
      if(c >= 97 && c<= 122) {
          result = result * 16 + (c - 87);
      }
  }
  return address(result);
}

bytes32 值采用十六进制格式。下表显示了 if 语句中的范围是如何计算的

在此处输入图像描述

function bytesToAddress(bytes memory b) public view returns (address) {
  uint result = 0;
  for (uint i = 0; i < b.length; i++) {
      uint c = uint(b[i]);
      if (c >= 48 && c <= 57) {
          result = result * 16 + (c - 48);
      }
      if(c >= 65 && c<= 90) {
          result = result * 16 + (c - 55);
      }
      if(c >= 97 && c<= 122) {
          result = result * 16 + (c - 87);
      }
  }
  return address(result);
}

bytes32 values are in hexadecimal format. Here is the table show how ranges in if statement is calculated

enter image description here

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文