Подтвердить что ты не робот

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

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

Спасибо!

4b9b3361

Ответ 1

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

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

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

Ответ 2

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

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

Это возвращает строку, закодированную в Base64, которая безопасна для URL (это то, о чем вы сказали, что действительно находитесь в комментариях к вашему вопросу).

Затем вы можете его декодировать, используя, как вы уже догадались:

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

Ответ 3

вы можете заменить + или слэш с помощью некоторой предопределенной строки, если это возможно.

Ответ 4

Общий вариант base-64 (для использования в строке запроса) заключается в использовании '-' и '_' вместо '+' и '/'. Может быть, немного Replace(...) на каждом конце выполнит эту работу?

Ответ 5

Вы можете использовать BitConverter.ToString(), который даст вам шестую строку. Однако результирующие строки будут длиннее, чем кодировка Base64.

Ответ 6

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

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

Я только что завернул свои методы с помощью

System.Text.Encoding.UTF8.GetBytes(plainText); а также System.Text.Encoding.UTF8.GetString(decoded);

чтобы он мог легко работать со строками.