Я столкнулся с проблемой, которую не могу понять. Вот определение проблемы:
У меня есть некоторые данные в столбце Blob в среде Db2 / Linux. Blob был записан в DB2 после сжатия байта [] с использованием сжатия JDK (код, выполняющий это, работает в среде Linux).
Я пытаюсь написать простую программу, чтобы прочитать некоторые из этих данных, распаковать их (используя JDK) и создать строку из распакованного массива байтов в среде Windows (моя среда разработки). Проблема заключается в том, что после распаковки BLOB-объекта (byte []) длина распакованного массива байтов обычно на 1-3 байта больше ожидаемой. Под ожидаемым я имею в виду, что поля смещения и длины также хранятся в базе данных. Таким образом, в этом случае длина распакованного байтового массива обычно больше, чем длина, хранимая в базе данных, всего на несколько байтов. Поэтому, если я создаю объект String из распакованного массива байтов и создаю другой объект String, используя метод substring (offset, length), используя поля offset и length из базы данных, моя вторая String (та, которую я получил с помощью метода substring) короче.
Примером может быть:
запись базы данных содержит большой двоичный объект, смещение: 0, длина: 260 409
после распаковки капли -
compressedByte[].length - 71,212
decompressedByte[].length - 260,412
new String(decompressByte[]).length() - 260,412
new String(decompressByte[]).subString(0, 260,409).length() - 260409
Для некоторых других входных записей я вижу разницу между 1-3 байтами в длину.
Я в некотором роде озадачен этой проблемой, и мне интересно, если кто-нибудь может предложить какие-либо советы, чтобы я мог сделать больше отладки, чтобы разобраться в этой проблеме. Мне интересно, может ли это быть как-то связано с тем, как байты хранятся / записываются в среде Linux и как они читаются в Windows? Спасибо за вашу помощь.