From a76cad1aa8e0ea1428bb5db9e78c5694a50d4dcb Mon Sep 17 00:00:00 2001 From: "Valeriano A.R" Date: Thu, 13 Jul 2017 02:07:06 +0200 Subject: [PATCH] Base62.Decode: Crop extra bits while decoding, for the cases of 5 bits. --- VAR.UrlCompressor/Base62.cs | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/VAR.UrlCompressor/Base62.cs b/VAR.UrlCompressor/Base62.cs index e2c32ac..acd0283 100644 --- a/VAR.UrlCompressor/Base62.cs +++ b/VAR.UrlCompressor/Base62.cs @@ -53,6 +53,7 @@ namespace VAR.UrlCompressor for (int i = 0; i < base62.Length; i++) { int charIdx = Base62CodingSpace.IndexOf(base62[i]); + if (charIdx == -1) { continue; } if ((i + 1) == base62.Length) { // Last symbol @@ -66,7 +67,7 @@ namespace VAR.UrlCompressor bytes.WriteBit(bitPosition, 3 - pad, (charIdx & 0x04) > 0); bytes.WriteBit(bitPosition, 4 - pad, (charIdx & 0x02) > 0); bytes.WriteBit(bitPosition, 5 - pad, (charIdx & 0x01) > 0); - + bitPosition += (6 - pad); break; } @@ -100,6 +101,8 @@ namespace VAR.UrlCompressor } } + + Array.Resize(ref bytes, (int)Math.Ceiling((double)bitPosition / 8)); return bytes; } }