转换 u32 -> sha256 -> 字符串

Convert u32 -> sha256 -> String

值得一提的是:我在 NOSTD 环境中工作:elrond_wasm https://docs.rs/elrond-wasm/0.17.1/elrond_wasm/api/trait.CryptoApi.html#tymethod.sha256

我正在尝试获取 u32 => sha256 => 字符串

let hash = self.crypto().sha256(&[1u8, 2u8, 3u8]);
if (String::from_utf8(hash.to_vec()).is_err()) {
uri.append_bytes("error".as_bytes());
}

我是不是做错了什么?它总是给出错误。打印时,我得到一些乱码,例如:D�z�G��a�w9��M��y��;oşc��!

&[1u8, 2u8, 3u8]这只是一个例子,但我尝试了很多选项

let mut serialized_attributes = Vec::new();
"123".top_encode(&mut serialized_attributes).unwrap();

123u32. to_be_bytes()123u32.to_string().to_bytes()

所有相同的结果。

您不应尝试直接打印原始哈希字节(因为这基本上是二进制垃圾),而是将其转换为有意义的表示形式,如十六进制。

您可以尝试使用十六进制板条箱: https://docs.rs/hex/0.3.1/hex/fn.encode.html