将UTF-8转换为base64字符串

54

我正在尝试将UTF-8转换为base64字符串。

例如: 我有一个在UTF-8下的"abcdef=="。实际上它是一个base64字符串的“表示”。

如何检索出"abcdef==" base64字符串呢(请注意,我不想要从UTF-8翻译得到"abcdef==",我想获取一个以base64编码的字符串,它 "abcdef==")。

编辑
由于我的问题似乎不太清楚,因此在这里重新表述一下:

我的字节数组(假设我把它命名为A)由base64字符串表示。将A转换为base64会给我"abcdef=="。

这个字符串表示是通过UTF-8发送到套接字中的(请注意,在UTF-8和base64下,该字符串表示完全相同)。所以我收到了一个包含"whatever/abcdef==/whatever"的UTF-8消息。

因此,我需要从这个套接字消息中检索出base64"abcedf=="字符串,以便获得A。

希望这样更清晰明了!

1个回答

146

很难确定您想要实现什么,但是假设您想要获取一个Base64字符串,在 解码 后为abcdef==,则以下内容应该有效:

byte[] bytes = Encoding.UTF8.GetBytes("abcdef==");
string base64 = Convert.ToBase64String(bytes);
Console.WriteLine(base64);

这将输出:YWJjZGVmPT0=,它是Base64编码的abcdef==

编辑:

要解码Base64字符串,只需使用Convert.FromBase64String()。例如:

string base64 = "YWJjZGVmPT0=";
byte[] bytes = Convert.FromBase64String(base64);

此时,bytes将是一个byte[](不是string)。如果我们知道该字节数组代表UTF8格式的字符串,则可以使用以下方法将其转换回字符串形式:

string str = Encoding.UTF8.GetString(bytes);
Console.WriteLine(str);

这将输出原始输入字符串,abcdef==在此示例中。


我想要相反的效果: "这将输出:"abcdef==",它是Base64编码中的"XXXX"。" 我会更新我的帖子。 - Nicolas Voron
或者如果我这样做,我如何从UTF-8 abcdef==中找到UTF-8 YWJjZGVmPT0= - Nicolas Voron
就这么简单。非常感谢。 - Nicolas Voron
1
@NicolasVoron,我已更新我的答案,同时提供了反向操作。 - Iridium
1
我看到了,我已经将你的答案标记为正确的。我一直在寻找如此复杂的解决方案...再次感谢你! :) - Nicolas Voron

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接