这个单元如何接受这个智能合约中的地址值?

问题描述 投票:0回答:2

谁能解释一下 uint 变量如何接受这个智能合约中的地址

// SPDX 许可证标识符:Apache-2.0。 杂注可靠性 ^0.6.12;

图书馆开罗常量 { uint256 公共常量 FIELD_PRIME = 0x800000000000011000000000000000000000000000000000000000000000001; }

根据我的知识单位仅接受无符号整数值,那么为什么在编译时它不会抛出错误消息

请解除我的疑虑

谢谢你

大家好

谁能解释一下 uint 变量如何接受这个智能合约中的地址

// SPDX 许可证标识符:Apache-2.0。 杂注可靠性 ^0.6.12;

图书馆开罗常量 { uint256 公共常量 FIELD_PRIME = 0x800000000000011000000000000000000000000000000000000000000000001; }

根据我的知识单位仅接受无符号整数值,那么为什么在编译时它不会抛出错误消息

请解除我的疑虑

谢谢你

ethereum solidity smartcontracts
2个回答
0
投票

如果给定的十六进制值的大小是 20 字节,则编译器认为它是一个地址,否则,它认为它是一个数字。 因此,如果您使用

0x8000000000000110000000000000000000000000
,它可能会抛出错误,因为它是一个地址,但在您的代码中,给定的值不是地址。 此外,如果值的长度是 39 或 41 十六进制数字,它也会引发错误,因为编译器认为它看起来像地址,但存在拼写错误。


0
投票

在 Solidity 中,有 2 种方法来表示 uint 值。

  • 十进制,123
  • 十六进制,0x006B

数字

FIELD_PRIME = 0x800000000000011000000000000000000000000000000000000000000000001
是十六进制格式的有效 uint256 值。 它不是@Satoshi 提到的地址。 它是一个正整数值,这正是 uint256 所需要的。

谢谢

© www.soinside.com 2019 - 2024. All rights reserved.