diff --git a/src/encode.rs b/src/encode.rs index fe59294..fbbd3a5 100644 --- a/src/encode.rs +++ b/src/encode.rs @@ -80,9 +80,12 @@ impl Encoder { num |= *n as u64; } } - let pad = n_bytes * 8 % 6; + let mut outlen = n_bytes * 8 / 6; + if n_bytes * 8 % 6 > 0 { + outlen += 1; + } for idx in (0..4).rev() { - if pad == 0 || idx < 4 - pad { + if outlen == 4 || idx < outlen { let b = num & 0b111111; obuf[idx] = self.alphabet.items[b as usize]; } @@ -96,7 +99,7 @@ impl Encoder { char::try_from(obuf[2]).unwrap(), char::try_from(obuf[3]).unwrap() )?; - if pad > 0 { + if outlen < 4 { break; } }