C#方法如Base64String,但只有字母数字(无加号或斜杠)

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

谢谢!

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

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

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

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

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

这将返回一个Base64编码的字符串,该字符串是URL安全的(这就是您在评论问题中所说的那样)。

然后你可以使用,你猜对了它再解码它:

 byte[] b = System.Web.HttpServerUtility.UrlTokenDecode(s); 

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

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

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

我正在寻找像编码器这样的编码器,我使用https://github.com/renmengye/base62-csharp/

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

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

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

调用允许它使用字符串轻松工作。