⌘K

Icon LinkBytes32

在 Sway 和 FuelVM 中,Bytes32 表示哈希。它们保存一个 256 位(32 字节)的值。Bytes32 是对 u8 的大小为 32 的切片的包装器:pub struct Bytes32([u8; 32]);

以下是创建 Bytes32 的主要方法:

use std::str::FromStr;
 
use fuels::types::Bytes32;
 
// Zeroed Bytes32
let b256 = Bytes32::zeroed();
 
// Grab the inner `[u8; 32]` from
// `Bytes32` by dereferencing (i.e. `*`) it.
assert_eq!([0u8; 32], *b256);
 
// From a `[u8; 32]`.
let my_slice = [1u8; 32];
let b256 = Bytes32::new(my_slice);
assert_eq!([1u8; 32], *b256);
 
// From a hex string.
let hex_str = "0x0000000000000000000000000000000000000000000000000000000000000000";
let b256 = Bytes32::from_str(hex_str)?;
assert_eq!([0u8; 32], *b256);

Bytes32 还实现了 fmt 模块的 DebugDisplayLowerHexUpperHex 特性。例如,您可以使用以下代码获取显示和十六进制表示:

let b256_string = b256.to_string();
let b256_hex_string = format!("{b256:#x}");

有关已实现的方法和特性的完整列表,请参阅 fuel-types 文档 Icon Link

Icon InfoCircle

注意: 在 Fuel 中,还有一种特殊类型叫做 b256,它类似于 Bytes32;也用于表示哈希,并且保存一个 256 位的值。在 Rust 中,通过 SDK,这被表示为 Bits256(value),其中 value[u8; 32]。如果您的合约方法接受 b256 作为输入,那么在从 SDK 调用时,您只需要传递 Bits256([u8; 32])