Bytes32
在 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
模块的 Debug
、Display
、LowerHex
和 UpperHex
特性。例如,您可以使用以下代码获取显示和十六进制表示:
let b256_string = b256.to_string();
let b256_hex_string = format!("{b256:#x}");
有关已实现的方法和特性的完整列表,请参阅 fuel-types 文档 。
注意: 在 Fuel 中,还有一种特殊类型叫做
b256
,它类似于Bytes32
;也用于表示哈希,并且保存一个 256 位的值。在 Rust 中,通过 SDK,这被表示为Bits256(value)
,其中value
是[u8; 32]
。如果您的合约方法接受b256
作为输入,那么在从 SDK 调用时,您只需要传递Bits256([u8; 32])
。