2016-10-18 4 views
0

У меня есть это изображение, представленное как base64 строка, которую я вставил здесь: https://paste.ubuntu.com/23343680/ есть изображение внутри него. Я звоню вэта строка base64 не получает расшифровку

Convert.FromBase64String 

и это дает мне

{"Invalid length for a Base-64 char array or string."} 

Теперь я использовал этот сайт http://codebeautify.org/base64-to-image-converter, чтобы вставить ту же строку, и это делает изображение в данных просто отлично. Что я делаю неправильно здесь, мне нужно получить байт [], из которого я сделаю изображение, но я не могу. спасибо.

+0

Что вы кормите 'Convert.FromBase64String'? Скажем, как вы генерируете строку, которую вы передаете методу в качестве аргумента – Benj

ответ

6

Вы должны добавить =, пока длина не будет делиться на 4. Только это допустимая строка base64.

Этот код будет делать:

string s = "yourVeryLongBase64String"; 

if ((s.Length % 4) > 0) 
{ 
    int diff = 4 - (s.Length % 4); 
    s = s.PadRight(s.Length + diff, '='); 
} 

byte[] b = Convert.FromBase64String(s); 
+0

, спасибо, все в порядке. Теперь есть одна проблема, если вы посмотрите на этот https://paste.ubuntu.com/23343796/ и вставьте его в Chrome-браузер, он покажет вам изображение, и если вы используете этот код https: // paste .ubuntu.com/23343806/(который я написал), чтобы сохранить обратное преобразование байтового массива base64 и сравнить, изображение совсем не то, что оно выглядит в хроме. Можете ли вы сказать мне, что происходит. Благодарю. – user734028

+0

Я понятия не имею. Сожалею. –

+0

привет, я нашел небольшую ошибку в вашем коде, строка int diff = s.Length% 4; shud be int diff = 4 - (s.Length% 4); – user734028

1
string str = "/9j/4AAQSkZJRgABAQAAAQABAAD/2wBDAAIBAQEBAQIBAQECAgICAgQDAgICAgUEBAMEBgUGBgYFBgYGBwkIBgcJBwYGCAsICQoKCgoKBggLDAsKDAkKCgr/2wBDAQICAgICAgUDAwUKBwYHCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgr/wAARCAHgAoADASIAAhEBAxEB/8QAHwAAAQUBAQEBAQEAAAAAAAAAAAECAwQFBgcICQoL/8QAtRAAAgEDAwIEAwUFBAQAAAF9AQIDAAQRBRIhMUEGE1FhByJxFDKBkaEII0KxwRVS0fAkM2JyggkKFhcYGRolJicoKSo0NTY3ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqDhIWGh4iJipKTlJWWl5iZmqKjpKWmp6ipqrKztLW2t7i5usLDxMXGx8jJytLT1NXW19jZ2uHi4+Tl5ufo6erx8vP09fb3+Pn6/8QAHwEAAwEBAQEBAQEBAQAAAAAAAAECAwQFBgcICQoL/8QAtREAAgECBAQDBAcFBAQAAQJ3AAECAxEEBSExBhJBUQdhcRMiMoEIFEKRobHBCSMzUvAVYnLRChYkNOEl8RcYGRomJygpKjU2Nzg5OkNERUZHSElKU1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6goOEhYaHiImKkpOUlZaXmJmaoqOkpaanqKmqsrO0tba3uLm6wsPExcbHyMnK0tPU1dbX2Nna4uPk5ebn6Onq8vP09fb3+Pn6/9oADAMBAAIRAxEAPwDk6KKKACiiigAooooA/EuiiigAooooAKKKKACiiigD9tKKKKACiiigAooooAKKKKAPxLooooAKKKKACiiigAooooA/bSiiigAooooAKKKKACiiigD8S6KKKACiiigAooooAKKKKAP20ooooAKKKKACiiigAooooA/EuiiigAooooAKKKKACiiigD9tKKKKACiiigAooooAKKKKAPxLooooAKKKKACiiigAooooA/bSiiigAooooAKKKKACiiigD8S6KKKACiiigAooooAKKKKAP20ooooAKKKKACiiigAooooA/EuiiigAooooAKKKKACiiigD9tKKKKACiiigAooooAKKKKAPxLooooAKKKKACiiigAoo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="; 
      byte[] arr = Convert.FromBase64String(str); 

Добавить == в конце строки. это будет работать. вход, который вы передаете, недопустим. Значение base64

 Смежные вопросы

  • Нет связанных вопросов^_^