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

Тема в разделе ".NET", создана пользователем fedrom, 20 авг 2008.

  1. fedrom

    fedrom Гость

    Подскажите кто-нить...
    Понадобилась программка которая записывала бы данные в файл побайтно(данные разных типов, 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 ...
    Подскажите кто работал много с байтовыми потоками... как проще сделать чтоб не переставлять местами искуственными циклами байты перез записью в в поток... работать приходится с байтами разных типов
     
  2. mr_ST

    mr_ST Гость

    Реализуй свой BigEndianBinaryWriter который будет переворачивать байты в нужном порядке. Это не сложно. Будет что-то типа:
    Код (Text):
    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; }
    }
    }
     
  3. mr_ST

    mr_ST Гость

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

Поделиться этой страницей