【问题标题】:Convert UTF-8 to base64 string将 UTF-8 转换为 base64 字符串
【发布时间】:2012-12-05 23:08:27
【问题描述】:

我正在尝试将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。

我希望这更清楚!

【问题讨论】:

    标签: c# encoding utf-8 base64


    【解决方案1】:

    很难说出您想要实现的目标,但假设您尝试获取 Base64 字符串,当 decodedabcdef== 时,以下应该可以工作:

    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”。”。我会更新我的帖子
    • 或者如果我这样做,我如何从 UTF-8 abcdef== 找到 UTF-8 YWJjZGVmPT0=
    • 就这么简单。非常感谢
    • @NicolasVoron 我已经更新了我的答案以提供逆运算。
    • 我看到了,我已将您的答案标记为正确的答案。我正在寻找如此复杂的解决方案...再次非常感谢:)
    猜你喜欢
    • 1970-01-01
    • 2013-03-02
    • 1970-01-01
    • 2012-02-20
    • 2015-04-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多