Как записать 2-мерный массив в Java, чтобы программа на С могла его прочитать

1

Я пишу, чтобы записать двумерный двоичный массив на Java, чтобы его можно было использовать в старой программе, написанной на C. Но если я использую метод writeObject ObjectOutputStream, он добавляет больше байтов. Я имею в виду, что выходной файл содержит больше байтов, чем требуется. Думаю, я мог бы написать двухмерный массив в C или C++, но прежде, чем я это сделаю, хотел узнать, каковы другие возможности.

  • 0
    Почему это не законный вопрос?
  • 0
    Как ваша C программа читает данные? Каковы требования к форматированию?
Показать ещё 2 комментария
Теги:
arrays

1 ответ

2
Лучший ответ

Начиная с массива:

int rows = 6;
int columns = 5;

int i,j;

int[][] myArray =  new int[rows][columns];



for (i=0; i<rows; i++) {
    for (j=0; j<columns; j++) {
         myArray[i][j] = i*j;
    }
}

try {
FileOutputStream out = new FileOutputStream("outputDat");
ObjectOutputStream oout = new ObjectOutputStream(out);

for (i=0; i<rows; i++) {
    for (j=0; j<columns; j++) {
         oout.writeShort(myArray[i][j] & 0xFFFF); // Edited this line!
    }
}

oout.close();
} catch (Exception ex) {
    ex.printStackTrace();
}

Это должно выводить целые значения 2 байта (16 бит) в файл данных "outputDat". Возможно, заказ нужно будет скорректировать в зависимости от того, как настроены ваши значения, поскольку формат, указанный вами в ссылке комментариев, указывает, начиная с нижнего левого.

  • 0
    Красивый. Я не знал о методе writeShort ObjectOutpStream.
  • 0
    Мне нужно записать это как 16-разрядные целые числа без знака. Поэтому я добавил эту строку - shortVal = shortVal> = 0? ShortVal: 0x10000 + shortVal; Но это не скомпилируется.
Показать ещё 1 комментарий

Ещё вопросы

Сообщество Overcoder
Наверх
Меню