Убедитесь, что вы используете потомок InputStream (байт против ввода символов).
Самый важный вопрос, который нужно задать, заключается в том, хранятся ли данные в порядке «little-endian» или «big-endian». Я предполагаю, что в порядке байтов (x86). Для трехбайтового числа:
FileInputStream fs = new FileInputStream(...);
int byte1 = fs.read();
int byte2 = fs.read();
int byte3 = fs.read();
int data = (byte3 << 16) | (byte2 << 8) | byte1;
Для байтов с прямым порядком байтов первое чтение байта является наименее значимым байтом.
Если вам нужен big-endian, измените последнюю строку на:
int data = (byte1 << 16) | (byte2 << 8) | byte3;