如何将 uint256 变量转换为 int256 变量?

2023-12-26

我试图打印uint timeStamp通过输入return timeStamp;就在下面return price;从这段代码:

pragma solidity ^0.6.7;

import "@chainlink/contracts/src/v0.6/interfaces/AggregatorV3Interface.sol";

contract PriceConsumerV3 {

AggregatorV3Interface internal priceFeed;

/**
 * Network: Kovan
 * Aggregator: BTC/USD
 * Address: 0x6135b13325bfC4B00278B4abC5e20bbce2D6580e
 */
constructor() public {
    priceFeed = AggregatorV3Interface(0x6135b13325bfC4B00278B4abC5e20bbce2D6580e);
}

/**
 * Returns the latest price
 */
function getThePrice() public view returns (int) {
    (
        uint80 roundID, 
        int price,
        uint startedAt,
        uint timeStamp,
        uint80 answeredInRound
    ) = priceFeed.latestRoundData();
    return price;
    return timeStamp;
}
}

当我在 Remix Compiler 上编译上面的代码时,它回复:

类型错误:返回参数类型 uint256 无法隐式转换为预期类型(第一个返回变量的类型)int256。返回时间戳; ^--------^

我倾向于认为我只需要输入int256 return timeStamp或类似的东西代替return timeStamp;但我不明白。

感谢您的反馈。


您可以输入uint to int使用这个语法:

return int(timeStamp);

注意:这将溢出(在 Solidity 0.7.x 及更早版本中)或抛出异常(在 Solidity 0.8+ 中)2^255 (int最大值)和2^256-1 (uint最大值)。但这很可能只是理论上的情况,因为时间戳预计不会有这么大的值。


请注意,此线路无法接通,因为您已经返回price在上一行。

(
    uint80 roundID, 
    int price,
    uint startedAt,
    uint timeStamp,
    uint80 answeredInRound
) = priceFeed.latestRoundData();
return price; // the `price` is returned, and the function doesn't execute after this line
return timeStamp; // this is ignored because of the early return on previous line

如果要返回多个值,可以使用以下语法:

// note the multiple datatypes in the `returns` block
function getThePriceAndTimestamp() public view returns (int, uint) {
    (
        uint80 roundID, 
        int price,
        uint startedAt,
        uint timeStamp,
        uint80 answeredInRound
    ) = priceFeed.latestRoundData();
    return (price, timeStamp); // here returning multiple values
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何将 uint256 变量转换为 int256 变量? 的相关文章

  • 第一个solidity程序

    一 示例程序 SPDX License Identifier GPL 3 0 pragma solidity gt 0 4 16 lt 0 9 0 contract SimpleStorage uint storedData functio
  • Solidity中引入的SPDX是什么

    Solidity中引入的SPDX是什么 起因 Solidity 0 6 8 要求引入 SPDX 许可证 否则会出现警告 Warning SPDX license identifier not provided in source file
  • 如何在opensea批量发布NFT(Goerli测试网)

    一 生成NFT图象 hashlips art engine HashLips Art Engine 是一种用于根据提供的图层创建多个不同的艺术作品实例的工具 1 安装 npm install or yarn install 2 使用 在 l
  • Remix 以太坊Solidity IDE搭建与初步使用

    以太坊 因为以太坊为开源社区 虽然东西很优秀 但是组件十分的杂乱 因此首先简单介绍下以太坊的一些常用组件 1 Geth Geth是由以太坊基金会提供的官方客户端软件 用Go编程语言编写的 2 Parity Parity 是对以太坊协议的另一
  • Solidity:如何将 bytes32 表示为字符串

    这在其他语言中可能很简单 但我不知道如何在 Solidity 中做到这一点 我有一个bytes32像这样0x05416460deb76d57af601be17e777b93592d8d4d4a4096c57876a91c84f4a712 I
  • uniswap 程序集 create2 功能如何工作?

    我正在查看 uniswap 代码 试图理解代码 其中大部分内容都非常清楚 但我确实有一些问题 在这个函数中 function createPair address tokenA address tokenB external returns
  • 如何使用 chainlink oracle 读取 JSON 文件

    我改变了链环API消费者示例 https docs chain link docs make a http get request 读取一个 JSON 文件 其中包含我希望带入并存储在智能合约中的数据 pragma solidity 0 6
  • 如何访问具有数组类型值的 Solidity 映射?

    我定义了一个映射类型的状态变量 例如映射 uint256 gt uint256 我想将其公开 以便我可以从合同之外访问它 但是编译器报错TypeError Wrong argument count for function call 1 a
  • web3.js如何搜索所有曾经创建的合约并查看地址

    我是 web3 js 和 Solidity 的新手 我的问题与我们在区块链上搜索的方式有关 如果我们知道合约地址 就很容易搜索特定合约 然而 我们如何使用最初用于创建合约的地址来查找和识别特定类型的合约 例如 我有一个合同 Contract
  • BigQuery/以太坊数据集 - 如何编写代码

    对于以太坊数据集 如果我知道特定合约的上个月交易 任何人都可以告诉我应该如何在 BigQuery 中编写 例如 如果我想知道合约地址 0x41dbecc1cdc5517c6f76f6a6e836adbee2754de3 上个月进行了多少笔交
  • Remix 上没有自动完成/代码完成功能?

    我在 Youtube 上观看 Remix 上的教程 他在输入代码时具有自动完成功能 但我没有 有谁知道如何启用它 这将帮助我更轻松地编写代码 但我在任何地方都找不到解决方案 对我来说 只需点击左下角的 设置 按钮并启用 在编辑器中启用代码完
  • Solidity - 输入 JSON 描述的 Solidity 代码

    我想编译我的以太坊 HelloWorld sol 智能合约 在所有教程中 您都是这样做的 var solc require solc var compiledContract solc compile fs readFileSync Hel
  • 使用 ethers js 运行安全帽测试时,合约事件侦听器不会触发

    这是一个非常小的存储库来显示该问题 https github com adamdry ethers event issue https github com adamdry ethers event issue 但我也会在这里解释一下 这是
  • Solidity v0.6.0。后备功能。需要它们做什么?

    阅读 Solidity v0 6 0 的文档后docs https docs soliditylang org en latest 060 breaking changes html semantic and syntactic chang
  • ERC721:转账调用者不是所有者也不是批准的

    我有一个 nftToken 合约 可以将代币铸造到 msg sender 然后我在市场合约中有一个函数 可以将 nft 从所有者转移到市场合约 但是 我收到一条错误消息 ERC721 转账调用者不是所有者也不是批准的 这是我的 nftCon
  • 通过python3计算uniswap 3.0池(对)地址

    我遇到了一个关于如何计算的问题 新的 uniswap 版本 3 池 早期版本称为pair 地址基于1 https github com Uniswap v3 sdk blob aeb1b09 src utils computePoolAdd
  • RuntimeError:使用 docker 关闭连接后无法重用套接字

    我正在关注本教程 https github com getamis eth indexer blob master README md fbclid IwAR3g3SAjJ9ik hHCFkol2k8YXo0GvBL15oSNC hIU38
  • 创建应用程序:无法初始化 ORM

    当我启动节点时 我总是收到此错误 请回复我我哪里出错了 错误 创建应用程序 无法初始化 ORM initializeORM NewORM 无法初始化 DB 无法打开 application name Chainlink 0 10 7 7C
  • 在 Solidity 中初始化一个大的固定长度数组

    我正在以太坊上构建一个游戏作为我的第一个项目 但我面临着存储和天然气限制 我想在区块链上存储一个存储智能合约 以便在部署后查询 我确实需要使用手动插入的常量值来初始化固定长度数组 我的情况如下 contract A some states
  • 这个套利机器人真的能正常运行吗?

    我一直在研究创建某种形式的加密货币套利交易机器人 最近看到了以下视频 该视频展示了一个套利机器人 该机器人通过部署到币安智能链的智能合约上的单个函数调用来运行 我已经查看了合约的代码 但不确定它是否能真正发挥作用 或者它是否是一个骗局合约

随机推荐