From ad2561e203bee469f3836976c11cd892020eb3b3 Mon Sep 17 00:00:00 2001 From: linraymond2006 Date: Wed, 29 Jan 2025 00:25:32 +0800 Subject: [PATCH 1/2] Tweaked `base64_encode_value` in `cores/esp8266/libb64/cencode.cpp` Refered to the original libb64 implementation and optimized time complexity of `base64_encode_value` from O(n) to O(1) Signed-off-by: linraymond2006 --- cores/esp8266/libb64/cencode.cpp | 17 +++++------------ 1 file changed, 5 insertions(+), 12 deletions(-) diff --git a/cores/esp8266/libb64/cencode.cpp b/cores/esp8266/libb64/cencode.cpp index d86df31af2..4a82e0ed0e 100755 --- a/cores/esp8266/libb64/cencode.cpp +++ b/cores/esp8266/libb64/cencode.cpp @@ -23,19 +23,12 @@ void base64_init_encodestate_nonewlines(base64_encodestate* state_in){ } char base64_encode_value(const char n) { - char r; + unsigned char r; - if (n < 26) - r = n + 'A'; - else if (n < 26 + 26) - r = n - 26 + 'a'; - else if (n < 26 + 26 + 10 ) - r = n - 26 - 26 + '0'; - else if (n == 62 ) - r = '+'; - else - r = '/'; - return r; +char base64_encode_value(const unsigned char n) { + static const char* encoding = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"; + if (n > 63) return '='; + return encoding[n]; } int base64_encode_block(const char* plaintext_in, int length_in, char* code_out, base64_encodestate* state_in){ From d61c09e0740f00220e100f205308260e808d23d1 Mon Sep 17 00:00:00 2001 From: linraymond2006 Date: Wed, 29 Jan 2025 00:42:38 +0800 Subject: [PATCH 2/2] Cleaned up the source file Signed-off-by: linraymond2006 --- cores/esp8266/libb64/cencode.cpp | 3 --- 1 file changed, 3 deletions(-) diff --git a/cores/esp8266/libb64/cencode.cpp b/cores/esp8266/libb64/cencode.cpp index 4a82e0ed0e..1d1ed89712 100755 --- a/cores/esp8266/libb64/cencode.cpp +++ b/cores/esp8266/libb64/cencode.cpp @@ -22,9 +22,6 @@ void base64_init_encodestate_nonewlines(base64_encodestate* state_in){ state_in->stepsnewline = -1; } -char base64_encode_value(const char n) { - unsigned char r; - char base64_encode_value(const unsigned char n) { static const char* encoding = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"; if (n > 63) return '=';