Zefirot
@Zefirot

Из-за чего вылетает «Invalid length for a Base-64 char array or string»?

В данной строке вылетает
string data = "rrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrr";
byte[] buffer = Convert.FromBase64String(data);

FormatException: Invalid length for a Base-64 char array or string.
System.Convert.FromBase64_Decode (System.Char* startInputPtr, System.Int32 inputLength, System.Byte* startDestPtr,

в data как видите я поместил статический тестовый текст, а то вдруг какие там где-то могли "заваляться" символы, но мне выдаёт такую вот ошибку.
В нэте везде пишут что это из-за недопустимых символов, но я на данный момент тестирую без всяких с чистой строкой, в чём же дело тогда?

Да и странно что раньше этот же код нормально работал....
  • Вопрос задан
  • 359 просмотров
Решения вопроса 3
freeExec
@freeExec
Участник OpenStreetMap
Потому что это мусор, а не Base64String. Если уж собрался тестировать, то сначала надо мусор закодировать, а уже потом раскодировать и сравнить с исходным.

А то с таким же успехом можно сохранить в файл эту страничку html и сменить расширение файла на .exe, а потом удивляться, почему файл не запускается.
Ответ написан
У Base64 есть определённые требования на длину, тк один байт кодируется несколькими символами + должно быть выравнивание в конце.
Передавай туда корректный base64 и ошибки не будет.
Ответ написан
@Voland69
Видимо вводимая строка не является валидными данными в base64.
Используйте web сервис для кодирования base64 и тестируйте на валидных строках, например "ZXhhbXBsZQ==" ("example").
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы