加入两个Base64字符串然后解码它们

时间:2015-02-25 18:08:41

标签: url base64 uri embed

我试图找出如何连接两个编码为Base64的字符串,然后解码并获得合并结果。

实施例

string1 Hello --- string1 Base64 SGVsbG8 =

string2 World --- string2 Base64 V29ybGQ =

如果我加入base64,我会得到一些不会解码的东西SGVsbG8 = V29ybGQ =

我希望结果说:Hello World

我不希望只有这个例子可以使用,而是可以使用任何字符串。 这是一个非常简化的问题,这是我尝试编写的应用程序中的一个步骤。

2 个答案:

答案 0 :(得分: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();
    }
}

答案 1 :(得分:0)

如果您将两个字符串都编码为数组,然后将这些数组与字节中的GetString组合在一起,该怎么办?

using System;
using System.Text;
using System.Linq;

public class Program
{
    public static void Main()
    {
        var base1 = "SGVsbG8=";
        var base2 = "V29ybGQ=";
        var array1 = Convert.FromBase64String(base1);
        var array2 = Convert.FromBase64String(base2);   
        var comb = Combine(array1, array2);
        var data = Encoding.Default.GetString(comb);
        Console.WriteLine(data);
    }
    private static byte[] Combine(byte[] first, byte[] second)
    {
        return first.Concat(second).ToArray();
    }
 }