// Copyright 2023 The rust-ggstd authors. // Copyright 2016 The Go Authors. All rights reserved. // Use of this source code is governed by a BSD-style // license that can be found in the LICENSE file. use ggstd::encoding::hex; fn main() { example_encode(); example_decode(); example_decode_string(); example_encode_to_string(); } fn example_encode() { let src = "Hello Gopher!"; let mut dst = vec![0; hex::encoded_len(src.len())]; let n = hex::encode(&mut dst, src.as_bytes()); println!("{}", String::from_utf8_lossy(&dst[..n])); // Output: // 48656c6c6f20476f7068657221 } fn example_decode() { let src = b"48656c6c6f20476f7068657221"; let mut dst = vec![0; hex::decoded_len(src.len())]; let (n, err) = hex::decode(&mut dst, src); if err.is_some() { panic!("{}", err.unwrap()); } println!("{}", String::from_utf8_lossy(&dst[..n])); // Output: // Hello Gopher! } fn example_decode_string() { let s = "48656c6c6f20476f7068657221"; let (decoded, err) = hex::decode_string(s); if err.is_some() { panic!("{}", err.unwrap()); } println!("{}", String::from_utf8_lossy(&decoded)); // Output: // Hello Gopher! } // fn ExampleDump() { // content := []byte("Go is an open source programming language.") // fmt.Printf("%s", hex::Dump(content)) // // Output: // // 00000000 47 6f 20 69 73 20 61 6e 20 6f 70 65 6e 20 73 6f |Go is an open so| // // 00000010 75 72 63 65 20 70 72 6f 67 72 61 6d 6d 69 6e 67 |urce programming| // // 00000020 20 6c 61 6e 67 75 61 67 65 2e | language.| // } // fn ExampleDumper() { // lines := []string{ // "Go is an open source programming language.", // "\n", // "We encourage all Go users to subscribe to golang-announce.", // } // stdoutDumper := hex::Dumper(os.Stdout) // defer stdoutDumper.Close() // for _, line := range lines { // stdoutDumper.Write([]byte(line)) // } // // Output: // // 00000000 47 6f 20 69 73 20 61 6e 20 6f 70 65 6e 20 73 6f |Go is an open so| // // 00000010 75 72 63 65 20 70 72 6f 67 72 61 6d 6d 69 6e 67 |urce programming| // // 00000020 20 6c 61 6e 67 75 61 67 65 2e 0a 57 65 20 65 6e | language..We en| // // 00000030 63 6f 75 72 61 67 65 20 61 6c 6c 20 47 6f 20 75 |courage all Go u| // // 00000040 73 65 72 73 20 74 6f 20 73 75 62 73 63 72 69 62 |sers to subscrib| // // 00000050 65 20 74 6f 20 67 6f 6c 61 6e 67 2d 61 6e 6e 6f |e to golang-anno| // // 00000060 75 6e 63 65 2e |unce.| // } fn example_encode_to_string() { let src = b"Hello"; let encoded_str = hex::encode_to_string(src); println!("{}", encoded_str); // Output: // 48656c6c6f }