2015-02-25 2 views
1

Я пытаюсь выяснить, как присоединиться к двум строкам, которые закодированы Base64, а затем декодировать и получить комбинированный результат.Присоединиться к двум строкам Base64, а затем их декодировать

Пример:

string1 Здравствуйте --- string1 Base64 SGVsbG8 =

строка2 World --- строка2 Base64 V29ybGQ =

Если я присоединяюсь к base64 я получаю то, что привычка расшифровывает SGVsbG8 = V29ybGQ =

Я хочу, чтобы результат сказать: Hello World

Я не тусклый t только этот пример для работы, а скорее что-то, что будет работать с любой строкой. Это очень упрощенная проблема, которая является шагом на приложении, которое я пытаюсь написать. Я застрял.

+0

думал старый пост, но может помочь, попробуйте это с помощью javascript, https://jsfiddle.net/1hcrvc16/3/ –

ответ

0

Я нашел лучший способ сделать это, добавить плюс между одной строкой и другим и добавить ОДИН, а только ОДИН равно char ('=') в конце строки. Возвращение будет "Hello> World", а затем удалить ">":

class Program 
{ 
    static void Main(string[] args) 
    { 
     string base64String = "SGVsbG8+V29ybGQ="; 
     byte[] encodedByte = Convert.FromBase64String(base64String); 
     var finalString = Encoding.Default.GetString(encodedByte)).Replace(">", " "); 
     Console.WriteLine(finalString.ToString()); 
    } 
} 

(Старый способ) В C# я сделать что-то вроде этого:

class Program 
{ 
    static void Main(string[] args) 
    { 
     string base64String = "SGVsbG8=V29ybGQ="; 
     Console.WriteLine(DecodeBase64String(base64String)); 
     Console.ReadLine(); 
    } 

    public static string DecodeBase64String(string base64String) 
    { 
     StringBuilder finalString = new StringBuilder(); 

     foreach (var text in base64String.Split(new char[] { '=' }, StringSplitOptions.RemoveEmptyEntries)) 
     { 
      byte[] encodedByte = Convert.FromBase64String(text + "="); 

      finalString.Append(Encoding.Default.GetString(encodedByte)); 
      finalString.Append(" "); //This line exists only to attend the "Hello World" case. The correct is remove this and let the one that will receive the return to decide what will do with returned string. 
     } 

     return finalString.ToString(); 
    } 
} 
+0

Спасибо! Он работал над кучей тестов, которые я выполнял. Существует проблема с интервалом, если вы используете строку, которая не заканчивается на «=», например, слово big («Ymln»). Но я даже не беспокоюсь о расстоянии, поскольку он должен быть добавлен в строку до того, как он будет закодирован. Спасибо Большое. – DonO

+0

Да, я помещаю пространство только для участия в «Hello World», но правильный способ - дать решение поставить или нет пространство в одно, которое получит возврат метода DecodeBase64String. –

Смежные вопросы