17
Próbuję przewidzieć ciąg znaków reprezentujący tablicę bajtów zakodowanych w base64.Przewidywanie rozmiaru bajtu bajtów zakodowanych w base64 []
Znalazłem poniższy wzór, jednak długość rzeczywistego encodedString
jest 4 większa niż base64EncodedSize
.
Cały pomysł polega na obliczeniu/przewidywaniu, jaki będzie zakodowany rozmiar ciągu dla danego byte[]
. Wolałbym nie konwertować byte[
] na ciąg podstawowy 64 tylko po to, by określić jego długość.
FileInfo pdfFile = new FileInfo(@"C:\TEMP\1.pdf");
long originalSizeInBytes = pdfFile.Length;
String encodedString = Convert.ToBase64String(File.ReadAllBytes(pdfFile.FullName));
long base64EncodedSize = (originalSizeInBytes/3) * 4;
----------------------------------------------------------------------------------
- Results -
-----------------------------------------------------------------------------------
originalSizeInBytes 913663 long
base64EncodedSize 1218216 long
encodedString.Length 1218220 int
base64EncodedSize 1218216 long
encodedString.Length - base64EncodedSize 4 long
Och. Liczba całkowita dzieląca się przed pomnożeniem? Zastanawiasz się, dlaczego wynik jest zbyt mały? – adelphus
Wow, nie mogę uwierzyć, że tego nie zauważyłem. To zawsze proste rzeczy. :) Dzięki. –