Я продолжаю получать неправильную ошибку символа Base64, хотя я не должен.Base64 String throw недопустимая ошибка символа
Программа принимает XML-файл и экспортирует его в документ. Если пользователь хочет, он также сжимает файл. Сжатие работает отлично и возвращает строку Base64, которая кодируется в UTF-8 и записывается в файл.
Когда его время, чтобы перезагрузить документ в программу я должен проверить его сжатый или нет, код просто:
byte[] gzBuffer = System.Convert.FromBase64String(text);
return "1F-8B-08" == BitConverter.ToString(new List<Byte>(gzBuffer).GetRange(4, 3).ToArray());
Он проверяет начало строки, чтобы увидеть, если он имеет GZips код в этом.
Теперь все, все мои тесты работают. Я беру строку, сжимаю ее, распаковываю и сравниваю с оригиналом. Проблема в том, когда я получаю строку, возвращаемую из набора записей ADO. Строка - это именно то, что было записано в файл (с добавлением «\ 0» в конце, но я не думаю, что даже что-то делает, даже урезал все еще бросает). Я даже копировал и вставлял всю строку в тестовый метод и сжимал/декомпрессировал это. Работает отлично.
Испытания пройдут, но код не будет работать с использованием одной и той же строки? Единственное отличие состоит в том, чтобы просто объявить правильную строку и передать ее, я получаю один из возвращаемого из набора записей.
Любые идеи о том, что я делаю неправильно?
Возможно, это поможет, если вы разместите пример строки, которую вы передаете в Convert.FromBase64String (например, что вы получаете на выходе, если вы положили Debug.Write непосредственно перед вызовом) –
... даже если вы отправили первый и последний 8 или около того байты и длину строки, это, вероятно, было бы достаточно, чтобы увидеть, что строка является правильным форматом. –
qGcAAB + LCA ... cAAA == Его 2376 символов. – Brandon