use ggstd::encoding::base64;
use std::io::Write;
fn main() {
example();
example_encoding_encode_to_string();
example_encoding_encode();
example_encoding_decode_string();
example_encoding_decode();
example_new_encoder();
}
fn example() {
let msg = "Hello, 世界";
let encoded = base64::get_std_encoding().encode_to_string(msg.as_bytes());
println!("{}", encoded);
let (decoded, err) = base64::get_std_encoding().decode_string(&encoded);
if err.is_some() {
println!("decode error: {:?}", err);
return;
}
println!("{}", String::from_utf8_lossy(&decoded));
}
fn example_encoding_encode_to_string() {
let data = "any + old & data".as_bytes();
let str = base64::get_std_encoding().encode_to_string(data);
println!("{}", str)
}
fn example_encoding_encode() {
let data = "Hello, world!".as_bytes();
let mut dst = vec![0; base64::get_std_encoding().encoded_len(data.len())];
base64::get_std_encoding().encode(&mut dst, data);
println!("{}", String::from_utf8_lossy(&dst));
}
fn example_encoding_decode_string() {
let str = "c29tZSBkYXRhIHdpdGggACBhbmQg77u/";
let (data, err) = base64::get_std_encoding().decode_string(str);
if err.is_some() {
println!("error: {:?}", err);
return;
}
println!("{}", ggstd::strconv::quote_bytes_string(&data));
}
fn example_encoding_decode() {
let str = "SGVsbG8sIHdvcmxkIQ==";
let mut dst = vec![0; base64::get_std_encoding().decoded_len(str.len())];
let (n, err) = base64::get_std_encoding().decode(&mut dst, str.as_bytes());
if err.is_some() {
println!("decode error: {:?}", err);
return;
}
let dst = &dst[..n];
println!("\"{}\"", String::from_utf8(dst.to_vec()).unwrap());
}
fn example_new_encoder() {
let input = b"foo\x00bar";
let stdout = std::io::stdout();
let mut stdout_writer = stdout.lock();
let mut encoder = base64::Encoder::new(base64::get_std_encoding(), &mut stdout_writer);
encoder.write_all(input).unwrap();
encoder.close().unwrap();
}