gpt4 book ai didi

rust - 如何使用 Rust 在 Substrate 中编码帐户 ID 的十六进制字符串表示?

转载 作者:行者123 更新时间:2023-12-03 11:35:43 26 4
gpt4 key购买 nike

给定一个十六进制表示:0xd43593c715fdd31c61141abd04a99fd6822c8558854ccde39a5684e7a56da27d ,我们可以使用 keyring.encodeAddress() 得到它所代表的 AccountId使用 JavaScript。但是,Rust 中对应的函数是什么?

AccountId 是 Substrate 的地址用户地址。例如,5GrwvaEF5zXb26Fz9rcQpDWS57CtERHpNehXCPcNoHGKutQY是 Alice 的账户 id,来自 Substrate 的开发链。

最佳答案

在 rust 中,你不应该真正从十六进制表示开始,你想使用字节。

但假设您有十六进制,您可以使用 hex_literal::hex 将十六进制字符串转换为 AccountId 字节。宏:

let account: AccountId32 = hex_literal::hex!["d43593c715fdd31c61141abd04a99fd6822c8558854ccde39a5684e7a56da27d"].into(),

Note that 0x is omitted from the hex literal.



现在你应该有 [u8; 32]包裹在 AccountId32身份结构。

从那里,您可以简单地执行与在 Display 的实现中所做的相同的逻辑。为 AccountId32 :
#[cfg(feature = "std")]
impl std::fmt::Display for AccountId32 {
fn fmt(&self, f: &mut std::fmt::Formatter) -> std::fmt::Result {
write!(f, "{}", self.to_ss58check())
}
}

基本上地址是 ss58帐户 ID 字节的编码版本。

可以在此处找到 ss58 编解码器库: https://substrate.dev/rustdocs/master/sp_core/crypto/trait.Ss58Codec.html

关于rust - 如何使用 Rust 在 Substrate 中编码帐户 ID 的十六进制字符串表示?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60983883/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com