是否有任何C#方法与Convert.ToBase64String类似,但除了字母数字输出外不会生成任何内容?
谢谢!
答案 0 :(得分:21)
答案现在有点过时了。为了未来的搜索者的利益:现在在C#中处理这个问题的最佳方法是:
byte[] b; // fill your byte array somehow
string s = System.Web.HttpServerUtility.UrlTokenEncode(b);
这将返回一个Base64编码的字符串,该字符串是URL安全的(这就是你在评论的评论中所说的那样)。
然后你可以再次解码它,你猜对了:
byte[] b = System.Web.HttpServerUtility.UrlTokenDecode(s);
答案 1 :(得分:12)
你可能正在考虑使用类似Base32编码的东西。 Michael Giagnocavo为C#here提供了Base32编码器/解码器。它使用大写字母和数字的组合。
还有一个关于StackOverflow here的相关讨论。
编辑:如果这是用于URL安全相关的Base64编码,只需执行Base64并将“+”替换为“ - ”,将“/”替换为“_”。但我猜,你可能不会那样想。
答案 2 :(得分:2)
如果可能,你可以用一些预定义的字符串替换+或斜杠。
答案 3 :(得分:2)
base-64的常见变体(用于查询字符串)是使用' - '和'_'代替'+'和'/'。也许在每一端Replace(...)
都可以完成这项工作?
答案 4 :(得分:0)
您可以使用BitConverter.ToString(),它将为您提供十六进制字符串。但是,生成的字符串将比Base64编码更长。
答案 5 :(得分:0)
我正在搜索类似编码器,我使用了https://github.com/renmengye/base62-csharp/
它是“0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz”字符空间范围内的编码器/解码器。
我只是用
包装了它的方法 System.Text.Encoding.UTF8.GetBytes(plainText);
和
System.Text.Encoding.UTF8.GetString(decoded);
调用以允许它轻松使用字符串。