2016-07-29 5 views
-4

Ich weiß, dass eine Base64-codierte Datei eine Länge haben muss, die ein Vielfaches von 4 ist. Und um das zu korrigieren, kann ich den folgenden Code verwenden.Wie behandelt ich falsche Länge Base64 Zeichenfolgen mit C#

 int mod4 = s.Length % 4; 
     if (mod4 > 0) 
     { 
      s += new string('=', 4 - mod4); 
     } 

Dies wird fügen Sie so viele „=“, wie sie es mit einer Länge zu machen braucht, die ein Vielfaches von 4 ist, aber ich bin fest mit einer Situation, in der „=“ Zeichen vorhanden sein können, wenn sie shouldn‘ t sein. Ich nehme an, ich könnte jedes Padding "=" entfernen und dann bei Bedarf hinzufügen, aber das scheint albern zu sein. Gibt es eine bessere Möglichkeit, Base64 Encoding zu behandeln, die durcheinander sind?

+0

_ „Ich bin mit einer Situation stecken, wo‚=‘Zeichen vorhanden sein können, wenn sie nicht sein sollte“ _ - wie, wo jemand ging und fügte der Zeichenkette einige '' = '' Zeichen hinzu? Warum sollten sie das tun? Warum müssen Sie überhaupt mit "verpatzten" Kodierungen umgehen? Warum können Sie nicht einfach darauf bestehen, dass die Quellen dieser Kodierungen Ihnen gültige geben? Alternativ, da das ''' '' '' 'eigentlich nicht unbedingt erforderlich ist (Sie können die Anzahl der verwendeten Oktette in der letzten Gruppe ohne es ableiten), warum entschlüsseln Sie einfach das base64 ohne es? Was hast du versucht, und warum hat dieser Versuch nicht funktioniert? Bitte stellen Sie eine gute [mcve] zur Verfügung. –

+0

Die Dateien werden "wie besehen" empfangen, und ich habe keine Kontrolle darüber. Es besteht keine Möglichkeit, dass eine unbekannte Entität ihre Codierung korrekt formatiert. Soweit habe ich den obigen Code ausprobiert, um sie wieder hinzuzufügen, nachdem ich sie am TrimEnd ('=') entfernt habe; Was ich suchte, war eine Methode, die ich nicht gefunden habe (vielleicht weil sie nicht existiert), die diese Aufgabe für mich erledigen kann. Dies ist meine erste Erfahrung mit Base64 und deshalb suchte ich nach Hilfe. – JimDel

+0

_ "In dieser Instanz ist es unmöglich, dass eine unbekannte Entität ihre Codierung richtig formatiert" _ - das ist im Allgemeinen nicht der Fall. Wenn Sie beispielsweise versuchen würden, ein Bild in Ihrer Frage zu posten, aber die Bilddatei ungültig wäre, würde SO keinen Versuch unternehmen, herauszufinden, was mit der Datei nicht stimmt. Es würde es einfach ablehnen. In jedem Fall, ohne eine klare Problemstellung, sehe ich nicht, wie Sie gute Antworten erwarten können. –

Antwort

0

Ich denke, Sie suchen

s.TrimEnd('='); 
+0

Ich weiß, kurze Antworten werden immer abgelehnt - aber Sie können einfache Dinge nicht noch einfacher machen und genau das ist es, was er brauchte, um das zu lösen. – Wolfgang

Verwandte Themen