diff --git a/src/bases/b58.rs b/src/bases/b58.rs
index 43e9e9ccf2b1b4beb2d9e2f02d458d8c236a0deb..94980af9e607c1a72ac4b3b9dad6d71dc580e86c 100644
--- a/src/bases/b58.rs
+++ b/src/bases/b58.rs
@@ -58,17 +58,20 @@ pub fn str_base58_to_32bytes(base58_data: &str) -> Result<([u8; 32], usize), Bas
 }
 
 /// Create a Base58 string from a slice of bytes.
-pub fn bytes_to_str_base58(bytes: &[u8], mut count_leading_1: usize) -> String {
+pub fn bytes_to_str_base58(bytes: &[u8], count_leading_1: usize) -> String {
     let mut str_base58 = String::new();
-    let bytes = &bytes[count_leading_1..];
+    let mut remaining_leading_1 = count_leading_1;
+    while remaining_leading_1 > 0 {
+        remaining_leading_1 -= 1;
+        str_base58.push('1');
+    }
+    if count_leading_1 >= 32 {
+        return str_base58;
+    }
 
     let bytes = if count_leading_1 == 0 && !bytes.is_empty() && bytes[0] == 0 {
         &bytes[1..]
     } else {
-        while count_leading_1 > 0 {
-            count_leading_1 -= 1;
-            str_base58.push('1');
-        }
         &bytes[count_leading_1..]
     };
 
@@ -82,8 +85,34 @@ mod tests {
 
     use super::*;
 
+    #[test]
+    fn test_base_58_str_with_only_1() -> Result<(), BaseConvertionError> {
+        let base58str = "11111111111111111111111111111111111111111111";
+
+        let (bytes, count_leading_1) = str_base58_to_32bytes(base58str)?;
+
+        println!("{:?}", bytes);
+
+        assert_eq!(base58str, &bytes_to_str_base58(&bytes[..], count_leading_1),);
+
+        Ok(())
+    }
+
     #[test]
     fn test_base_58_str_with_leading_1() -> Result<(), BaseConvertionError> {
+        let base58str = "13fn6X3XWVgshHTgS8beZMo9XiyScx6MB6yPsBB5ZBia";
+
+        let (bytes, count_leading_1) = str_base58_to_32bytes(base58str)?;
+
+        println!("{:?}", bytes);
+
+        assert_eq!(base58str, &bytes_to_str_base58(&bytes[..], count_leading_1),);
+
+        Ok(())
+    }
+
+    #[test]
+    fn test_other_base_58_str_with_leading_1() -> Result<(), BaseConvertionError> {
         let base58str = "1V27SH9TiVEDs8TWFPydpRKxhvZari7wjGwQnPxMnkr";
 
         let (bytes, count_leading_1) = str_base58_to_32bytes(base58str)?;