You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

在Cairo中将felt252转换为ContractAddress的方法

如何从十六进制值创建ContractAddress并解决类型转换异常

在Starknet的Cairo语言中,直接将十六进制值赋值给ContractAddress类型会抛出类型不匹配异常,因为十六进制字面量默认被识别为felt252类型。解决这个问题需要使用官方提供的类型转换辅助函数:

  • 核心转换函数:ContractAddress::from_felt
    这个函数可以将felt252类型的值转换为ContractAddress类型,示例代码如下:

    // 先将十六进制值声明为felt252类型
    let addr_felt: felt252 = 0x06D98dC7ea54CF77eeD141F423f6007Dd61fbd2b6bD429Facdf5d4803353063f;
    // 通过from_felt函数转换为ContractAddress
    let addr: ContractAddress = ContractAddress::from_felt(addr_felt);
    
  • 简化写法
    也可以直接将十六进制值作为参数传入转换函数,省略中间变量:

    let addr: ContractAddress = ContractAddress::from_felt(0x06D98dC7ea54CF77eeD141F423f6007Dd61fbd2b6bD429Facdf5d4803353063f);
    

说明

ContractAddress是Cairo中用于标识合约地址的封装类型,底层虽然基于felt252,但为了类型安全,必须通过显式转换完成赋值,不能直接将felt252字面量赋值给ContractAddress变量。

内容的提问来源于stack exchange,提问作者Mathe Eliel

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.22 13:50:00