From 9bf7b183e744a325a48a573165740d01bf60b2cf Mon Sep 17 00:00:00 2001 From: Tan Yong He Date: Mon, 23 Nov 2020 15:31:43 +0800 Subject: [PATCH] Improve Base16 Codebase (#3534) * Add doctest and remove input() usage * Apply suggestions from code review Co-authored-by: Dhruv Manilawala --- ciphers/base16.py | 19 ++++++++++++++----- 1 file changed, 14 insertions(+), 5 deletions(-) diff --git a/ciphers/base16.py b/ciphers/base16.py index 0210315d5..f27ea4628 100644 --- a/ciphers/base16.py +++ b/ciphers/base16.py @@ -1,13 +1,22 @@ import base64 -def main(): - inp = input("->") +def encode_to_b16(inp: str) -> bytes: + """ + Encodes a given utf-8 string into base-16. + >>> encode_to_b16('Hello World!') + b'48656C6C6F20576F726C6421' + >>> encode_to_b16('HELLO WORLD!') + b'48454C4C4F20574F524C4421' + >>> encode_to_b16('') + b'' + """ encoded = inp.encode("utf-8") # encoded the input (we need a bytes like object) b16encoded = base64.b16encode(encoded) # b16encoded the encoded string - print(b16encoded) - print(base64.b16decode(b16encoded).decode("utf-8")) # decoded it + return b16encoded if __name__ == "__main__": - main() + import doctest + + doctest.testmod()