15

是否有任何与 Convert.ToBase64String 类似的 C# 方法,但除了字母数字输出之外不生成任何内容?

谢谢!

4

6 回答 6

23

现在的答案有点过时了。为了将来的搜索者的利益:现在在 C# 中处理此问题的最佳方法是:

byte[] b; // fill your byte array somehow
string s = System.Web.HttpServerUtility.UrlTokenEncode(b);

这将返回一个 URL 安全的 Base64 编码字符串(这就是您在问题的评论中所说的真正追求的内容)。

然后,您可以使用它再次对其进行解码,您猜对了:

byte[] b = System.Web.HttpServerUtility.UrlTokenDecode(s);
于 2013-03-01T23:20:29.423 回答
14

您可能正在考虑使用类似 Base32 编码的方法。Michael Giagnocavo有一个用于 C#Base32 编码器/解码器。它使用大写字母和数字的组合。

这里也有关于 StackOverflow 的相关讨论。

编辑:如果这是用于与 URL 安全相关的 Base64 编码,只需执行 Base64 并将“+”替换为“-”,将“/”替换为“_”。但我猜,你可能不想要它。

于 2009-06-01T04:12:07.280 回答
3

base-64 的一个常见变体(用于查询字符串)是使用“-”和“_”代替“+”和“/”。也许Replace(...)在每一端都有一点可以完成这项工作?

于 2009-06-01T04:22:09.683 回答
2

如果可能,您可以用一些预定义的字符串替换 + 或斜杠。

于 2009-06-01T04:00:32.477 回答
1

我正在寻找类似的编码器,我使用了https://github.com/renmengye/base62-csharp/

它是“0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz”字符空间范围内的编码器/解码器。

我只是用它包装了它的方法

System.Text.Encoding.UTF8.GetBytes(plainText);System.Text.Encoding.UTF8.GetString(decoded);

调用以使其可以轻松地处理字符串。

于 2016-09-15T16:14:06.533 回答
0

您可以使用 BitConverter.ToString() 它将为您提供一个十六进制字符串。但是,生成的字符串将比 Base64 编码长。

于 2009-06-01T04:35:58.430 回答