Различные чтения двоичных файлов в Java / Stack Overflow

Моя задача — читать двоичные сжатые файлы, используя JAVA.
Есть разница между чтением как C ++ и JAVA.

я не знаю, в чем проблема, когда я читаю это с JAVA.
Пожалуйста, дайте мне знать проблему кода JAVA, который я написал.

пожалуйста помоги..

Вот примеры кодов C ++ и JAVA.
(нет проблем при чтении с C ++)

# в C ++

ifstream file(path, ios_base::in | ios_base::binary);

while (!file.eof())
{
file.read((char *)&j, sizeof(int));
if (file.eof()) break;
file.read((char *)&k, sizeof(int));
file.read((char *)&result_c[j][k], sizeof(float));
file.read((char *)&result_g[j][k], sizeof(float));

for (int l = 0; l < 6; l++)
{
file.read((char *)&result_i[j][k][l], sizeof(float));
file.read((char *)&result_t[j][k][l], sizeof(float));
}
}

# в Java

        fin = new FileInputStream(new File(_path));
bin = new BufferedInputStream(fin);
din = new DataInputStream(bin);

boolean _eof = false;
while (!_eof) {

int _ny = 0, _nx = 0;
float _cResult = 0.0f, _gResult = 0.0f;
float[] _iResult = new float[6];
float[] _tResult = new float[6];

try {

_ny = din.readInt(); // ny
_nx = din.readInt(); // nx
_cResult = din.readFloat();
_gResult = din.readFloat();

for (int i = 0; i < 6; i++) {
_iResult[i] = din.readFloat();
_tResult[i] = din.readFloat();
}

} catch (EOFException eofe) {
_eof = true;
}
}

-3

Решение

DataInputStream Предполагается, что вход в сети пока. Ваш код C ++ предполагает, что он находится в собственном порядке байтов. Если они разные, результаты тоже будут другими. DataInputStream также предполагает, что int а также float 32 бита и т. д. См. Javadoc.

2

Другие решения

Других решений пока нет …