Метод 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);
вызовы позволяют легко работать со строками.