谁能解释一下 uint 变量如何接受这个智能合约中的地址
// SPDX 许可证标识符:Apache-2.0。 杂注可靠性 ^0.6.12;
图书馆开罗常量 { uint256 公共常量 FIELD_PRIME = 0x800000000000011000000000000000000000000000000000000000000000001; }
根据我的知识单位仅接受无符号整数值,那么为什么在编译时它不会抛出错误消息
请解除我的疑虑
谢谢你
大家好
谁能解释一下 uint 变量如何接受这个智能合约中的地址
// SPDX 许可证标识符:Apache-2.0。 杂注可靠性 ^0.6.12;
图书馆开罗常量 { uint256 公共常量 FIELD_PRIME = 0x800000000000011000000000000000000000000000000000000000000000001; }
根据我的知识单位仅接受无符号整数值,那么为什么在编译时它不会抛出错误消息
请解除我的疑虑
谢谢你
如果给定的十六进制值的大小是 20 字节,则编译器认为它是一个地址,否则,它认为它是一个数字。 因此,如果您使用
0x8000000000000110000000000000000000000000
,它可能会抛出错误,因为它是一个地址,但在您的代码中,给定的值不是地址。
此外,如果值的长度是 39 或 41 十六进制数字,它也会引发错误,因为编译器认为它看起来像地址,但存在拼写错误。
在 Solidity 中,有 2 种方法来表示 uint 值。
数字
FIELD_PRIME = 0x800000000000011000000000000000000000000000000000000000000000001
是十六进制格式的有效 uint256 值。
它不是@Satoshi 提到的地址。
它是一个正整数值,这正是 uint256 所需要的。
谢谢