地址类型
在Move中,为了表示地址,使用了一种特殊的类型称为address
。它是一个32字节的值,用于表示区块链上的任何地址。地址有两种语法形式:以0x
为前缀的十六进制地址和命名地址。
// address literal
let value: address = @0x1;
// named address registered in Move.toml
let value = @std;
let other = @sui;
地址字面量以@
符号开头,后面跟着一个十六进制数字或标识符。十六进制数字被解释为一个32字节的值。编译器将在Move.toml文件中查找该标识符,并将其替换为相应的地址。如果在Move.toml文件中找不到该标识符,编译器将抛出错误。
转换
Sui框架提供了一组辅助函数来处理地址。由于地址类型是一个32字节的值,可以将其转换为u256
类型,反之亦然。它还可以转换为vector<u8>
类型和从vector<u8>
类型转换回地址类型。
示例:将地址转换为u256
类型,然后再转换回来。
use sui::address;
let addr_as_u256: u256 = address::to_u256(@0x1);
let addr = address::from_u256(addr_as_u256);
示例:将地址转换为vector<u8>
类型,然后再转换回来。
use sui::address;
let addr_as_u8: vector<u8> = address::to_bytes(@0x1);
let addr = address::from_bytes(addr_as_u8);
示例:将地址转换为字符串。
use sui::address;
use std::string::String;
let addr_as_string: String = address::to_string(@0x1);
进一步阅读
- 在Move参考中的Address。