3 releases

0.1.2 Jan 16, 2022
0.1.1 Jan 16, 2022
0.1.0 Jan 16, 2022

#244 in Windows APIs

MIT license

10KB
66 lines

Win-Base64 API

Description

A simple wrapper over the Windows API Base64 Encoding and Decoding

  1. String to Base64 (encode)
  2. Base64 to String (decode)

Sample Code

use win_base64::decode;
use win_base64::encode;
let text = "What's up?😊🥘🍲🚩🏁🚀👌😁👍😍❤️💕🎶";
let base64_string = encode(&text)?;
let decoded_text = decode(&base64_string)?;
// If it worked, text and decoded_text would be the same
println!("Original: {}", text);
println!("Decoded : {}", decoded_text);

OUTPUT

Original: What's up?😊👌😁👍😍❤️💕🎶
Decoded: What's up?😊👌😁👍😍❤️💕🎶

Yes this supports Emojis.

Similar code to base64 library

let a = "hello world";
let b = "aGVsbG8gd29ybGQ=";

assert_eq!(encode(a)?, b);
assert_eq!(a, &decode(b)?[..]);

Multiple Decodes

  1. Decode as &mut [u8] (decode_as_mut8)
    Probably the fastest
    But the sizes are to be specified manually.
    So probably the riskiest as well.

     let text = "What's up?";
     let base64_string = encode(&text)?;
     let mut decoded_arr = vec![0u8; 10];
     use win_base64::decode_as_mut8;
     decode_as_mut8(&base64_string, &mut decoded_arr)?;
     // If it worked, text and decoded_text would be the same
     println!("Original: {}", text);
     println!("Decoded : {:?}", decoded_arr);
    
  2. Decode as Vec<u8> (decode_as_vecu8)
    Allocates a vec of the correct size Returns this vec with decoded values Safer than mut u8 as it knows the decoded size

    let text = "What's up?";
    let base64_string = encode(&text)?;
    use win_base64::decode_as_vecu8;
    let decoded_vec = decode_as_vecu8(&base64_string)?;
    // If it worked, text and decoded_text would be the same
    println!("Original: {}", text);
    println!("Decoded : {:?}", decoded_vec);
    
  3. Decode as String (decode)
    Present in top most example

    use win_base64::decode;
    use win_base64::encode;
    let text = "What's up?😊🥘🍲🚩🏁🚀👌😁👍😍❤️💕🎶";
    let base64_string = encode(&text)?;
    let decoded_text = decode(&base64_string)?;
    // If it worked, text and decoded_text would be the same
    println!("Original: {}", text);
    println!("Decoded : {}", decoded_text);
    

Dependencies

~129MB
~2M SLoC