代码如下:
use std::str::FromStr;
use solana_program::pubkey::Pubkey;
fn main() {
// 1. 从 Base58 字符串解析为 Pubkey
let pubkey_str = "FNRGWhr86sedvanwB5CBi767NAsiCQeqpkWYFf3pnvrv";
let pubkey = Pubkey::from_str(pubkey_str)
.expect("解析公钥字符串失败");
// 2. 将 Pubkey 转换为字节数组
let bytes: [u8; 32] = pubkey.to_bytes();
println!("字节数组: {:02x?}", bytes);
// 3. 将字节数组转回 Base58 字符串
let back_to_base58 = bs58::encode(bytes).into_string();
println!("转回 Base58: {}", back_to_base58);
// 验证原始字符串和转换后的字符串相同
assert_eq!(pubkey_str, back_to_base58);
}