Url 连接两个Base64字符串,然后对其进行解码

Url 连接两个Base64字符串,然后对其进行解码,url,base64,uri,embed,Url,Base64,Uri,Embed,我试图找出如何将两个编码为Base64的字符串连接起来,然后解码并得到组合结果 例如: string1 Hello-string1 Base64 SGVsbG8= string2 World-string2 Base64 V29ybGQ= 如果我加入base64,我会得到一些无法解码SGVsbG8=V29ybGQ的东西= 我希望结果是:你好,世界 我不希望只使用这个示例,而是希望它可以使用任何字符串。 这是一个非常简单的问题,这是我试图编写的应用程序中的一个步骤。我找到了一个最好的方法,在一个字

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

例如:

string1 Hello-string1 Base64 SGVsbG8=

string2 World-string2 Base64 V29ybGQ=

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

我希望结果是:你好,世界

我不希望只使用这个示例,而是希望它可以使用任何字符串。
这是一个非常简单的问题,这是我试图编写的应用程序中的一个步骤。我找到了一个最好的方法,在一个字符串和另一个字符串之间添加加号,再添加一个,只有一个等于字符串末尾的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();
    }
}

我找到了一个最好的方法,在一个字符串和另一个字符串之间加上加号,再加上一个,在字符串的末尾只有一个等于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();
    }
}

如果将两个字符串都编码到数组中,然后组合这些数组,最后从字节中获取字符串,会怎么样

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();
    }
 }

如果将两个字符串都编码到数组中,然后组合这些数组,最后从字节中获取字符串,会怎么样

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();
    }
 }

非常感谢。这对我进行的一系列测试有效。如果使用不以“=”结尾的字符串,例如单词big Ymln,则会出现间距问题。但我甚至不担心间距,因为它应该在编码之前添加到字符串上。非常感谢。是的,我放置空间只是为了参加Hello World案例,但正确的方法是让决定是否将空间放置到一个将接收DecodeBase64String方法返回的位置。谢谢!这对我进行的一系列测试有效。如果使用不以“=”结尾的字符串,例如单词big Ymln,则会出现间距问题。但我甚至不担心间距,因为它应该在编码之前添加到字符串上。非常感谢。是的,我放置空间只是为了参加Hello World的案例,但正确的方法是让决定是否将空间放置到一个将接收DecodeBase64String方法返回的位置。认为是旧帖子,但可能有帮助,用javascript试试这个,认为是旧帖子,但可能有帮助,用javascript试试这个,