将UTF-8转换为base64字符串

时间:2012-12-18 17:15:01

标签: c# encoding utf-8 base64

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

示例:UTF-8中有“abcdef ==”。它实际上是base64字符串的“表示”。

如何检索“abcdef ==”base64字符串(请注意,我不想要UTF-8的“abcdef ==”“翻译”,我希望获得一个字符串编码在base64 “abcdef ==”)。

修改
由于我的问题似乎不清楚,这是一个重新制定:

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

此字符串表示形式通过UTF-8中的套接字发送(请注意,字符串表示形式在UTF-8和base64中完全相同)。所以我收到一条UTF-8消息,其中包含UTF-8中的“whatever / abcdef == / whatever”。

所以我需要从这个套接字消息中检索base64“abcedf ==”字符串才能获得A.

我希望这更清楚!

1 个答案:

答案 0 :(得分:136)

告诉您要实现的目标有点困难,但假设您尝试获取一个Base64字符串,当已解码abcdef==时,以下内容应该有效:

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

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

修改

要解码Base64字符串,只需使用Convert.FromBase64String()即可。 E.g。

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

此时,bytes将是byte[](不是string)。如果我们知道字节数组表示UTF8中的字符串,那么可以使用以下命令将其转换回字符串形式:

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

在这种情况下,这将输出原始输入字符串abcdef==