转换 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
值得一提的是:我在 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