2015-03-05 2 views
1

Я хочу, чтобы добавить эту таблицу в файле:Java: как написать короткий массив как массив байтов в файле

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); 
    ... 

Мой RAWDATA содержит:

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

Благодарим за помощь!

ответ

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 в моем случае. – anthony

Смежные вопросы