Метод C # похож на Base64String, но только буквенно-цифровой (без плюса или косой черты) - PullRequest
11 голосов
/ 01 июня 2009

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

Спасибо!

Ответы [ 6 ]

21 голосов
/ 02 марта 2013

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

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

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

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

byte[] b = System.Web.HttpServerUtility.UrlTokenDecode(s);
12 голосов
/ 01 июня 2009

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

Здесь также обсуждается вопрос о StackOverflow здесь .

EDIT: И если по какой-либо причине это относится к кодированию Base64, связанному с безопасностью URL, просто выполните Base64 и замените "+" на "-" и "/" на "_". Но я предполагаю, что вы можете этого не хотеть.

2 голосов
/ 01 июня 2009

Распространенным вариантом base-64 (для использования в строке запроса) является использование «-» и «_» вместо «+» и «/». Возможно, немного Replace(...) на каждом конце сделает эту работу?

2 голосов
/ 01 июня 2009

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

0 голосов
/ 15 сентября 2016

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

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

Я только что обернул его методы с

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

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

0 голосов
/ 01 июня 2009

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...