Java: как записать короткий массив, как байтовый массив в файл

1

Я хочу добавить эту таблицу в файл:

public static final short[] FMW = {0x18, 0xC1, 0x00, 0x00, 0x36, 0xC1, 0x00}

Мне нужно использовать короткий массив, потому что значение 0xC1 не распознается, как байт.

Затем я хочу поместить этот массив в свой файл:

DataOutputStream out = null;
try {
   out = new DataOutputStream(new FileOutputStream(file));
   for (short anInt : FMW)
      out.write((byte)anInt);
   out.close();
} catch (IOException e) {
...

Но когда я прочитал это содержимое файла после этого, это не правильно:

try {
  FileReader reader = new FileReader(file);
  if (file.length() < offset+count) count = (int)(file.length() - offset);
  char[] rawdata = new char[count];
  reader.read(rawdata, 0, FMW.length);
  ...

Мои исходные данные содержат:

[0] : 0x18
[1] : 0xFFFD
[2] : 0x00
[3] : 0x00
[4] : 0x36
[5] : 0xFFFD
[6] : 0x00

Спасибо за вашу помощь !

Теги:
arrays
file
bytearray

1 ответ

0

Я также столкнулся с аналогичным типом проблемы, тогда я написал метод, который принимает short[] массив и возвращает массив byte[] -

public byte[] shortToByte(short[] shortInts) {
    int j=0;
    int length=shortInts.length;
    byte[] byteData=new byte[length*2];
    for (int i=0;i<length;i++) {
      byteData[j++]=(byte)(shortInts[i]>>>8);
      byteDataj++]=(byte)(shortInts[i]>>>0);
    }
    return byteData;
  }  
  • 0
    Нет, проблема все та же: у меня 0xFFFD вместо 0xC1 в моем случае.

Ещё вопросы

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