solidity byte32转字符串日志输出学习
直接上代码:
// SPDX-License-Identifier: MIT
pragma solidity ^ 0.8.0;
abstract contract EIP712 {
event LogValues(bytes32 domainSeparator, bytes32 structHash);
function _hashTypedDataV4(bytes32 structHash) internal virtual returns (bytes32) {
bytes32 domainSeparator = _domainSeparatorV4();
emit LogValues(domainSeparator, structHash);
return keccak256(abi.encodePacked("\x19\x01", domainSeparator, structHash));
}
function bytes32ToString(bytes32 data) internal pure returns (string memory) {
bytes memory bytesArray = new bytes(64);
for (uint256 i = 0; i < 32; i++) {
bytes1 char = bytes1(bytes32(uint256(data) * 2 ** (8 * i)));
bytesArray[i * 2] = byteToHex(uint8(char) / 16);
bytesArray[i * 2 + 1] = byteToHex(uint8(char) % 16);
}
return string(bytesArray);
}
function byteToHex(uint8 _byte) internal pure returns (bytes1) {
if (_byte < 10) {
return bytes1(uint8(bytes1('0')) + _byte);
} else {
return bytes1(uint8(bytes1('a')) + (_byte - 10));
}
}
}
该代码无法直接使用
定义了一个LogValues时间
bytes32ToString需要自己实现,默认不支持
emit LogValues(domainSeparator, structHash);输出日志

浙公网安备 33010602011771号