Solidity
將地址轉換為字元串
在 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); }