Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/rust/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用Rust对基底中帐户id的十六进制字符串表示进行编码?_Rust_Substrate_Polkadot_Polkadot Js - Fatal编程技术网

如何使用Rust对基底中帐户id的十六进制字符串表示进行编码?

如何使用Rust对基底中帐户id的十六进制字符串表示进行编码?,rust,substrate,polkadot,polkadot-js,Rust,Substrate,Polkadot,Polkadot Js,给定一个十六进制表示:0xD43593C715FDD31C61141ABD04A99FD6822C85584CCDE39A5684E7A56DA27D,我们可以使用JavaScript获取它表示的AccountId。然而,锈的相应功能是什么 AccountId是用户地址的地址。例如,5grwvaef5zxb26fz9rcqpdws57cterhpnehxcpnohgkutqy是Alice的帐户id,来自基板的开发链。在rust中,您不应该真正从十六进制表示开始,您想要使用字节 但假设您有十六进制

给定一个十六进制表示:
0xD43593C715FDD31C61141ABD04A99FD6822C85584CCDE39A5684E7A56DA27D
,我们可以使用JavaScript获取它表示的AccountId。然而,锈的相应功能是什么


AccountId是用户地址的地址。例如,
5grwvaef5zxb26fz9rcqpdws57cterhpnehxcpnohgkutqy
是Alice的帐户id,来自基板的开发链。

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

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

let account: AccountId32 = hex_literal::hex!["d43593c715fdd31c61141abd04a99fd6822c8558854ccde39a5684e7a56da27d"].into(),
请注意,
0x
从十六进制文字中省略

现在,您应该将
[u8;32]
包装在
AccountId32
identity结构中

从这里,您可以简单地执行与
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())
    }
}
基本上,地址是帐户Id字节的
ss58
编码版本


ss58编解码器库可以在这里找到:

无论如何,看看@Stargateur,我使用了基板世界中已知的关键字,因此没有必要对此进行详细说明。无论如何,我已经添加了相关的超链接。现在清楚了吗?@Stargateur你建议的
hex
行不通,错误是“奇数长度”。该十六进制值是按比例编码的。我需要用那种方式解码它。你能帮我吗?另外,如果问题现在清楚了,你能删除下一票吗?这样它就可以接触到更多的观众?十六进制地址没有任何特殊的编码来阻止它变成字节。奇数长度错误可能与将
0x
保留在前面,或忘记复制字符串中的所有字符有关。“我使用了基板世界中已知的关键字,因此没有必要对此进行详细说明。”并非每个人都知道基板事实上,我希望很少有人知道它,而知道生锈的人数要高得多。如果你明确描述你想要/需要什么,你将提高质量和获得好答案的机会,那么只知道生锈的人可以做出好答案。因为举例来说,我不会为了回答你而阅读所有的子状态文档。你的问题仍然不干净,因为我们仍然不知道你的十六进制值是如何工作的。你的例子来自现在这里我不能直接使用显示作为
account
AccountId32
类型,它已经实现了
Display
?是的,你可以直接执行
println!(“{}”,account)
我想