Я обнаружил случайную серию байтов, вставленных в любое поле большого двоичного объекта при работе с базой данных через Adobe AIR. (Судя по моим результатам, он всегда начинается с байтов [12, ...] , но я не уверен в этом)
Я думаю, что это sizeinfo байтов, позвольте мне объяснить, как я пришел к такому выводу.
Сначала мой контекст: я манипулирую базами данных sqlite через Adobe AIR (на стороне клиента) и System.data.sqlite (на стороне сервера C #)
При использовании System.data.sqlite, если я читаю базу данных Sqlite, заполненную BLOB от Adobe AIR, мне нужно проверить эти байты, добавленные в начале AIR, а затем у меня все двоичные данные хорошо сформированы. ИДЕАЛЬНО!
При использовании Adobe AIR, если я попытался прочитать sqlite db, заполненный BLOB-файлом System.data.Sqlite, данные повреждены, я получаю ошибку! Очевидно, потому что у меня нет пропущенных байтов, исследованных AIR.
Конечно, я пытался добавить эти байты, просто скопировав серию из 3 байтов, которые я удалил в моем первом случае, но затем он вернул данные частично, а в случае изображений последние строки пикселей стали серыми, а в некоторых изображения у меня более или менее серые линии. Поскольку данные соответствовали серии изображений одного размера ~ 4 КБ, и я добавил 3 байта из одного из них, и у меня был такой результат.
И Air также иногда выдаст эту ошибку:
Ошибка: ошибка № 2030: конец файла был
встречаются.
Так что, очевидно, эти байты дают информацию о размере, но я не совсем понимаю, как это происходит!?!
Я попытался добавить байтовый массив длиной 4 КБ, он имеет тенденцию добавлять 3 байта, но я попытался добавить 4 МБ, и он достигает 5 байтов.
Я нашел этот вопрос Как преобразовать 3 байта в 24-битное число в C #? , и я подумал, что это может быть то, как хранится информация о размере.
Но я все еще не понимаю ...