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

谢谢!

有帮助吗?

解决方案

你可能会考虑使用类似Base32编码即可。有一个Base32编码器/解码器,用于C#此处迈克尔Giagnocavo。它采用的大写字母和数字的组合。

还有StackOverflow上的相关讨论,这里

编辑:如果任何机会,这是对网址安全相关的Base64编码,只是做Base64和“+”替换为“ - ”和“/”与“_”。但我猜,你可能不希望它为。

其他提示

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

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

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

然后你可以使用你猜到的再次解码它:

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

可以替换+或与一些预定义的字符串如果可能削减。

基-64(用于在查询字符串使用)的常见变体是使用“ - ”和“_”代替“+”和“/”。也许在每一端有点Replace(...)会做的工作?

您可以使用BitConverter.ToString(),它会给你一个十六进制字符串。然而所得到的字符串将比Base64编码长。

我正在寻找一个这样像编码器和我用 https://github.com/renmengye/ base62-CSHARP /

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

我刚刚结束其方法与

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

调用允许它与串容易工作。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top