编码往返于base-64的字符串

本文关键字:字符串 base-64 编码 | 更新日期: 2023-09-27 18:29:01

我正在尝试从base-64字符串来回编码一些字符串,我正在使用truble来获得正确的结果。

string text = base64string.... //Here I have a base-64 string.
byte[] encodedByte = System.Text.ASCIIEncoding.ASCII.GetBytes(text);
string base64Encoded = Convert.ToBase64String(encodedByte);
if (text == base64Encoded) //If the new encoded string is equal to its original value
    return base64Encoded;

我已经试过了,但似乎没有得到正确的结果。System.Text.Encoding.UnicodeSystem.Text.Encoding.UTF8 我都试过了

可能是什么问题?有人有合适的解决方案吗?

编码往返于base-64的字符串

string text = base64string.... //Here I have a base-64 string.
byte[] encodedByte = System.Text.ASCIIEncoding.ASCII.GetBytes(text);
string base64Encoded = Convert.ToBase64String(encodedByte);

您正在对字符串进行双重编码。您从一个base64字符串开始,获取字节,然后再次对其进行编码。如果要进行比较,则需要从原始字符串开始。

如果text是一个base-64字符串,那么您正在向后执行:

byte[] raw = Convert.FromBase64String(text); // unpack the base-64 to a blob
string s = Encoding.UTF8.GetString(raw); // assume the blob is UTF-8, and 
                                         // decode to a string

这将使您获得CCD_ 4。不过,请注意,此场景仅适用于以ascii格式表示unicode文本。通常情况下,如果原始内容是string,则不会对其进行base-64编码。

将Base64中需要的任何内容转换为Byte数组,然后使用FromBase64String和ToBase64String转换为Base64:

Byte[] buffer = Convert.FromBase64String(myBase64String1);
myBase64String2 = Convert.ToBase64String(buffer);

myBase64String1将等于myBase64String 2。您将需要使用其他方法将您的数据类型获取到Byte数组中,反之则需要使用相反的方法获取数据类型。我已经使用它将类的内容转换为字节数组,然后转换为Base64字符串,并将该字符串写入文件系统。后来,我通过反转过程将其读回到类实例中。

您已经正确布局了编码代码。要确认base64编码的字符串是否正确,您可以尝试对其进行解码,并将解码的内容与原始内容进行比较:

var decodedBytes = Convert.FromBase64String(base64encoded);
var compareText = System.Text.Encoding.ASCII.GetString(decodedText);
if (text == compareText)
{
    // carry on...
    return base64encoded;
}