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

StackOverflow https://stackoverflow.com/questions/933503

Вопрос

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

Спасибо!

Это было полезно?

Решение

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

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

РЕДАКТИРОВАТЬ: И если случайно это кодировка Base64, безопасная для URL-адресов, просто выполните Base64 и замените «+» на «-» и «/» на «_».Но я предполагаю, что вам это может не понадобиться.

Другие советы

Ответы немного устарели.В интересах будущих искателей:Лучший способ справиться с этим сейчас на С#:

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);

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top