Поясните кто знает C#

  • Автор темы fedrom
  • Дата начала
F

fedrom

Гость
#1
Подскажите кто-нить...
Понадобилась программка которая записывала бы данные в файл побайтно(данные разных типов, int, double,bool и т.д.). Начал разработку в VStudio2008 на языке C#... данный файл потом испльзуется как ини файл для программы на Java в модеме Siem TC65 почему именно побайтно..., потому что нет в библиотеке этого модема работы с файлами на его flash памяти другого типа... Проблема в след-м .. при использованиии в C# BinaryWriter... получил в файле данные записанные младшим байтом вперед... а вот программа в модеме считывает старшим байтом вперед...
чтоб понятнее было ... например записал я int n=60; получил в файле последовательность из 4 байт (3С 00 00 00)hex а вот при записи того же числа программой в модеме получил содержимое файла (00 00 00 3С)hex ...
Подскажите кто работал много с байтовыми потоками... как проще сделать чтоб не переставлять местами искуственными циклами байты перез записью в в поток... работать приходится с байтами разных типов
 
M

mr_ST

Гость
#2
Реализуй свой BigEndianBinaryWriter который будет переворачивать байты в нужном порядке. Это не сложно. Будет что-то типа:
Код:
public class BigEndianBinaryWriter : IDisposable
{
private const int MaxDataWidth = 8;
private Stream _OutStream;
private byte[] _Buffer = new byte[MaxDataWidth];

protected BigEndianBinaryWriter()
{
}

public BigEndianBinaryWriter(Stream output)
{
_OutStream = output;
}


protected virtual void Dispose(bool disposing)
{
if (disposing)
{
this._OutStream.Close();
}
}

public virtual void Write(short value)
{
_Buffer[0] = (byte)(value >> 8);
_Buffer[1] = (byte)value;
_OutStream.Write(_Buffer, 0, 2);
}

// Реализацию Write для других типов пишем сами;)

public virtual Stream BaseStream
{
get { return _OutStream; }
}
}
 
M

mr_ST

Гость
#3
А если попробовать писать не как инт а как масив байт?
BinaryWriter как раз и занимается тем что преобразует int и т.д. в массив байт. Гораздо разумнее сделать свою реализацию BinaryWriter чем каждый раз мудохаться с преобразованием в массив байт.