From c14664ae54f2fb427436074e962943ed3ff9d71e Mon Sep 17 00:00:00 2001 From: ia0 Date: Sat, 15 Jan 2022 16:05:29 +0100 Subject: [PATCH] Add "Encode and decode base32" example --- src/encoding.md | 2 ++ src/encoding/string/base32.md | 31 +++++++++++++++++++++++++++++++ src/encoding/strings.md | 2 ++ 3 files changed, 35 insertions(+) create mode 100644 src/encoding/string/base32.md diff --git a/src/encoding.md b/src/encoding.md index 3ed713ee..c8f9a1f1 100644 --- a/src/encoding.md +++ b/src/encoding.md @@ -5,6 +5,7 @@ | [Percent-encode a string][ex-percent-encode] | [![percent-encoding-badge]][url] | [![cat-encoding-badge]][cat-encoding] | | [Encode a string as application/x-www-form-urlencoded][ex-urlencoded] | [![url-badge]][url] | [![cat-encoding-badge]][cat-encoding] | | [Encode and decode hex][ex-hex-encode-decode] | [![data-encoding-badge]][data-encoding] | [![cat-encoding-badge]][cat-encoding] | +| [Encode and decode base32][ex-base32] | [![data-encoding-badge]][data-encoding] | [![cat-encoding-badge]][cat-encoding] | | [Encode and decode base64][ex-base64] | [![base64-badge]][base64] | [![cat-encoding-badge]][cat-encoding] | | [Read CSV records][ex-csv-read] | [![csv-badge]][csv] | [![cat-encoding-badge]][cat-encoding] | | [Read CSV records with different delimiter][ex-csv-delimiter] | [![csv-badge]][csv] | [![cat-encoding-badge]][cat-encoding] | @@ -20,6 +21,7 @@ [ex-percent-encode]: encoding/strings.html#percent-encode-a-string [ex-urlencoded]: encoding/strings.html#encode-a-string-as-applicationx-www-form-urlencoded [ex-hex-encode-decode]: encoding/strings.html#encode-and-decode-hex +[ex-base32]: encoding/strings.html#encode-and-decode-base32 [ex-base64]: encoding/strings.html#encode-and-decode-base64 [ex-csv-read]: encoding/csv.html#read-csv-records [ex-csv-delimiter]: encoding/csv.html#read-csv-records-with-different-delimiter diff --git a/src/encoding/string/base32.md b/src/encoding/string/base32.md new file mode 100644 index 00000000..6404ee2b --- /dev/null +++ b/src/encoding/string/base32.md @@ -0,0 +1,31 @@ +## Encode and decode base32 + +[![data-encoding-badge]][data-encoding] [![cat-encoding-badge]][cat-encoding] + +The [`data_encoding`] crate provides a `BASE32::encode` method which takes a +`&[u8]` and returns a `String` containing the base32 representation of the data. + +Similarly, a `BASE32::decode` method is provided which takes a `&[u8]` and +returns a `Vec` if the input data is successfully decoded. + +The example below coverts `&[u8]` data to base32 equivalent and compares this +value to the expected value. + +```rust,edition2018 +use data_encoding::{BASE32, DecodeError}; + +fn main() -> Result<(), DecodeError> { + let original = b"Cooking with Rust"; + let expected = "INXW623JNZTSA53JORUCAUTVON2A===="; + + let encoded = BASE32.encode(original); + assert_eq!(encoded, expected); + + let decoded = BASE32.decode(encoded.as_bytes())?; + assert_eq!(&decoded[..], &original[..]); + + Ok(()) +} +``` + +[`data_encoding`]: https://docs.rs/data-encoding/*/data_encoding/ diff --git a/src/encoding/strings.md b/src/encoding/strings.md index 6cbec02c..1bf39e85 100644 --- a/src/encoding/strings.md +++ b/src/encoding/strings.md @@ -6,6 +6,8 @@ {{#include string/hex.md}} +{{#include string/base32.md}} + {{#include string/base64.md}} {{#include ../links.md}}