powered by simpleCommunicator - 2.0.56     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / frombase64
15 сообщений из 15, страница 1 из 1
frombase64
    #36311127
afonya009
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Делаю так
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
            char[] base64CharArray;
           
            string f = "aHR0cDovL2xldGl0Yml0Lm5ldC9kb3dubG9hZC8zNzQ5LmJlMzZjY2EwZTZhZWQ2OTJiZjI4MDgxODIvU0dfMjBfMjAwOS5yYXIuaHRtbA";
                
            base64CharArray = f.ToCharArray();      
            

            // Convert the Base64 UUEncoded input into binary output.
            byte[] binaryData;
            binaryData = System.Convert.FromBase64CharArray(base64CharArray, 0, base64CharArray.Length);
В ответ: Недопустимая длина массива знаков Base-64.

Этот сервис http://www.base64.ru/ преобразует строчку корректно.
Почему шарп не преобразует???
...
Рейтинг: 0 / 0
frombase64
    #36311139
Фотография D129
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
afonya009,

Когда в байтовый массив преобразовывали из строки - формат (этот ваш) 64 потерялся, по видимому...
...
Рейтинг: 0 / 0
frombase64
    #36311144
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну, во-первых, зачем танцы с бубном ToCharArray? Есть же FromBase64String:
Код: plaintext
1.
string f = "base64-строка";
byte[] binaryData = Convert.FromBase64String(f);
А, во-вторых, Ваша строка f - это не строка формата base64. Откуда Вы ее взяли-то?
...
Рейтинг: 0 / 0
frombase64
    #36311148
afonya009
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
МСУ,

Это урл в base64. На сайте http://www.base64.ru/ все корректно извлекаеться.
...
Рейтинг: 0 / 0
frombase64
    #36311160
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Найдите 3 отличия:

Код: plaintext
"aHR0cDovL2xldGl0Yml0Lm5ldC9kb3dubG9hZC8zNzQ5LmJlMzZjY2EwZTZhZWQ2OTJiZjI4MDgxODIvU0dfMjBfMjAwOS5yYXIuaHRtbA"


Код: plaintext
aHR0cDovL2xldGl0Yml0Lm5ldC9kb3dubG9hZC8zNzQ5LmJlMzZjY2EwZTZhZWQ2OTJiZjI4MDgxODIvU0dfMjBfMjAwOS5yYXIuaHRtbA==
...
Рейтинг: 0 / 0
frombase64
    #36311161
Фотография D129
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
afonya009,

Код: plaintext
1.
2.
3.
 string fff = "aHR0c0DovL2xldGl0Yml0L5m5ldC9kb3dubG9hZC8zNzQ5LmJlMzZjY2EwZTZhZWQ2OTJiZjI4MDgxODIvU0dfMjBfMjAwOS5yYXIuaHRtbA";
			
				
byte[] urlChars = System.Convert.FromBase64String(fff);

Вот так отработало без эксепшенов. Типа делайте с байтовым массивом дальше, что хотите....

У вас длина строки неправильная. Я тупо добавил еще два символа (в случайные места, так что урл испорчен в научных целях :) )
И сконвертилось.

Веб-сервис по-видимому, сам добавляет до нужной длины...
...
Рейтинг: 0 / 0
frombase64
    #36311162
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУНайдите 3 отличия:

Код: plaintext
aHR0cDovL2xldGl0Yml0Lm5ldC9kb3dubG9hZC8zNzQ5LmJlMzZjY2EwZTZhZWQ2OTJiZjI4MDgxODIvU0dfMjBfMjAwOS5yYXIuaHRtbA


Код: plaintext
aHR0cDovL2xldGl0Yml0Lm5ldC9kb3dubG9hZC8zNzQ5LmJlMzZjY2EwZTZhZWQ2OTJiZjI4MDgxODIvU0dfMjBfMjAwOS5yYXIuaHRtbA==
...
Рейтинг: 0 / 0
frombase64
    #36311163
Фотография D129
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУ,

Какой вы.... Бастинд....
...
Рейтинг: 0 / 0
frombase64
    #36311168
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
D129МСУ,

Какой вы.... Бастинд....



Да просто хз, каким конвертером пользуется base64.ru, но в дотнете парсер работает согласно спецификаций RFC 1421 и RFC 2045, где "=" это спец. кода суффикса.
Если не хватает (до трех) одного байта, то добавляется один символ "равно": Z8E=
если не хватает двух байт, то добавляются два символа "равно": Z8==

Так что такие пироги.
...
Рейтинг: 0 / 0
frombase64
    #36311171
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Кстати, на тему идеологии base64 и его алгоритмах непременно рекомендую почитать статью на Королевстве: Base64 для не продвинутых
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
frombase64
    #38261793
IIgor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Иногда попадаются закодированные данные длиной не кратное 4
Естественно FromBase64String выдает ошибку.
сделать кратное 4 можно добавив = или ==

Но что делать в случае когда нужно добавить 3 символа?
=== вызывает ошибку.

Вот для примера закодированные данные.
Код: c#
1.
"0J/RgNC+0LHQu9C10LzQsCDRgSDQutCw0YDRgtCw0LzQu"



Онлайн переводчик переводит корректно ("base64.ru")

Есть какие нибуть правила. как действовать в этом случае?
...
Рейтинг: 0 / 0
frombase64
    #38261836
bazile
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
IIgor, Добавлять к строке нужно один или два знака равно, никогда больше. Не знаю как работает base64, но у тебя неправильная строка. Строку "0J/RgNC+0LHQu9C10LzQsCDRgSDQutCw0YDRgtCw0LzQu" он переводит в "Проблема с картами", но если мы попробуем обратную операцию, то получим "0J/RgNC+0LHQu9C10LzQsCDRgSDQutCw0YDRgtCw0LzQuA==".
...
Рейтинг: 0 / 0
frombase64
    #38261893
IIgor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
bazileIIgor, Добавлять к строке нужно один или два знака равно, никогда больше. Не знаю как работает base64, но у тебя неправильная строка. Строку "0J/RgNC+0LHQu9C10LzQsCDRgSDQutCw0YDRgtCw0LzQu" он переводит в "Проблема с картами", но если мы попробуем обратную операцию, то получим "0J/RgNC+0LHQu9C10LzQsCDRgSDQutCw0YDRgtCw0LzQuA==".

Да. Я обратил на это внимания.
Но не я кодирую.
Конкретно это в емейл приходит.
вот строка оригинал
=?utf-8?B?0J/RgNC+0LHQu9C10LzQsCDRgSDQutCw0YDRgtCw0LzQu?=

да и онлайн переводчику не нужен этот символ для коректного перевода. Значит есть какой то алгоритм действия.
...
Рейтинг: 0 / 0
frombase64
    #38261968
bazile
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
IIgor, онлайн переводчик реализует упрощенный алгоритм перевода из base64 игнорирущий возможные ошибки. Если тебе тужно такое же поведение, то напиши свой base64 декодер.
...
Рейтинг: 0 / 0
frombase64
    #38262103
carrotik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
IIgor,

... а это случайно не часть многострочной строки base64 в теме имейла? ... NET. SmtpClient часто балуется такой разбивкой без учета того, что серпом он может полоснуть посередине двухбайтового символа, и насколько я знаю, даже такие серьезные почтовые клиенты как Thunderbird не могут корректно такой сабжект отобразить ... Т.е. надо складывать все строки в одну, и только потом декодировать ...
...
Рейтинг: 0 / 0
15 сообщений из 15, страница 1 из 1
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / frombase64
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]