Метод C#, такой как Base64String, но только буквенно-цифровой (без плюса или косой черты)

есть ли какой-либо метод C#, который работает аналогично Convert.ToBase64String, но не генерирует ничего, кроме буквенно-цифрового вывода?

спасибо!

6 ответов


вы, вероятно, смотрите на использование чего-то вроде кодировки Base32. Существует кодер/декодер Base32 для C# здесь Майкл Giagnocavo. Он использует комбинацию заглавных букв и цифр.

существует также соответствующее обсуждение StackOverflow здесь.

EDIT: и если случайно это для 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 (), который даст вам шестнадцатеричную строку. Однако результирующие строки будут длиннее, чем кодировка Base64.


Я искал такой, как кодировщик, и я использовал https://github.com/renmengye/base62-csharp/

это кодировщик / декодер в" 0123456789ABCDEFGHIJKLMNOPQRSTUVwxyzabcdefghijklmnopqrstuvwxyz " диапазон пространства символов.

Я просто обернул свои методы с

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

вызовы позволяют легко работать со строками.