簡體   English   中英

C#方法類似Base64String,但只有字母數字(無加號或斜杠)

[英]C# Method like Base64String, but only alphanumeric (no plus or slash)

是否有任何C#方法與Convert.ToBase64String類似,但除了字母數字輸出外不生成任何內容?

謝謝!

答案現在有點過時了。 為了未來的搜索者的利益:現在在C#中處理這個問題的最佳方法是:

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

這將返回一個Base64編碼的字符串,該字符串是URL安全的(這就是你在評論的評論中所說的那樣)。

然后你可以使用,你猜對了它再解碼它:

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

您可能正在考慮使用類似Base32編碼的東西。 Michael Giagnocavo 在這里有一個用於C#的Base32編碼器/解碼器。 它使用大寫字母和數字的組合。

還有StackOverflow上的相關討論在這里

編輯:如果這是用於URL安全相關的Base64編碼,只需執行Base64並將“+”替換為“ - ”,將“/”替換為“_”。 但我猜,你可能不會那樣想。

如果可能的話,你可以用一些預定義的字符串替換+或斜杠。

base-64的常見變體(用於查詢字符串)是使用' - '和'_'代替'+'和'/'。 或許在每一端都有一點Replace(...)可以完成這項工作嗎?

我正在尋找像編碼器這樣的編碼器,我使用https://github.com/renmengye/base62-csharp/

它是“0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz”字符空間范圍中的編碼器/解碼器。

我只是把它的方法包裝好了

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

調用允許它使用字符串輕松工作。

您可以使用BitConverter.ToString(),它將為您提供十六進制字符串。 但是,生成的字符串將比Base64編碼長。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM