Solidity

將地址轉換為字元串

  • April 13, 2022

在 Solidity 中,如何將發件人地址轉換為字元串?

如何將地址轉換為 Solidity 中的字節? 沒有提供可行的解決方案

採用abi.encodePacked(x)

地址在哪裡x。(感謝@k06a

我無法使用 web3.js 讀取 ABI 編碼的字元串。因此,我添加了一些對 ASCII 字元的轉換:

function toAsciiString(address x) internal pure returns (string memory) {
   bytes memory s = new bytes(40);
   for (uint i = 0; i < 20; i++) {
       bytes1 b = bytes1(uint8(uint(uint160(x)) / (2**(8*(19 - i)))));
       bytes1 hi = bytes1(uint8(b) / 16);
       bytes1 lo = bytes1(uint8(b) - 16 * uint8(hi));
       s[2*i] = char(hi);
       s[2*i+1] = char(lo);            
   }
   return string(s);
}

function char(bytes1 b) internal pure returns (bytes1 c) {
   if (uint8(b) < 10) return bytes1(uint8(b) + 0x30);
   else return bytes1(uint8(b) + 0x57);
}

引用自:https://ethereum.stackexchange.com/questions/8346