在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
相关产品推荐
相关产品推荐

