【发布时间】:2014-10-03 19:25:58
【问题描述】:
我在理解 Rust 中的特征概念时遇到了一些问题。我正在尝试将一个简单的十六进制值编码为 Base64 但没有运气,这是我的代码(还有一个字符串到 Base64 的示例)
extern crate serialize;
use serialize::base64::{ToBase64, STANDARD};
use serialize::hex::{FromHex, ToHex};
fn main () {
let stringOfText = "This is a String";
let mut config = STANDARD;
println!("String to base64 = {}", stringOfText.as_bytes().to_base64(config));
// Can't figure out this
Vladimir 提供的解决方案适用于 0x 表示的十六进制值。现在我正在寻找以字符串表示的十六进制值:
extern crate serialize;
use serialize::base64::{ToBase64, STANDARD};
use serialize::hex::{FromHex, ToHex};
fn main () {
let stringOfText = "49276d206b696c6c696e6720796f757220627261696e206c696b65206120706f69736f6e6f7573206d757368726f6f6d";
let mut config = STANDARD;
println!("String to base64 = {}", stringOfText.from_hex().from_utf8_owned().as_bytes().to_base64(config));
// result should be: SSdtIGtpbGxpbmcgeW91ciBicmFpbiBsaWtlIGEgcG9pc29ub3VzIG11c2hyb29t
}
from_hex() 给了我一个Vec<u8> 和.to_base64() 期待u8, 的缓冲区首先我想将Vec<u8> 转换为字符串,然后使用as_bytes() 来获取缓冲区,到目前为止仍然不走运。
【问题讨论】:
-
ToBase64trait 的唯一实现者是&[u8](doc.rust-lang.org/serialize/base64/trait.ToBase64.html) ,因此您需要将该数字转换为它才能使用to_base64()。 -
谢谢@snf,刚刚更新到这个
let hex = 0x49276d2;let integer = hex as u8;println!("Hex to base64 = {}", integer.to_base64(config));,但还是没有运气 -
我不明白你想要做什么,你想base64_encode "0x49276d2" or "\x04\x92\x76\xd2" 还是别的什么?
-
@david-dias 您能否将接受的答案更改为 2017 年有效的答案?
-
完成,感谢您的 ping! :)