1. Набираем команду codeby webinar. Набираем команду для организации и проведения вебинаров. Подробнее ...

    Скрыть объявление
  2. Требуются разработчики и тестеры для проекта codebyOS. Требования для участия в проекте: Знание принципов работы ОС на базе Linux; Знание Bash; Крайне желательное знание CPP, Python, Lua; Навыки системного администрирования. Подробнее ...

    Скрыть объявление
  3. Получи 30.000 рублей. Для получения денег необходимо принять участие в конкурсе авторов codeby. С условиями и призами можно ознакомиться на этой странице ...

    Внимание! Регистрация авторов на конкурс закрыта.

    Скрыть объявление

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

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

  1. fedrom

    fedrom Гость

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

    Репутация:
    0
    Реализуй свой 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; }
    }
    }
     
  3. mr_ST

    mr_ST Гость

    Репутация:
    0
    BinaryWriter как раз и занимается тем что преобразует int и т.д. в массив байт. Гораздо разумнее сделать свою реализацию BinaryWriter чем каждый раз мудохаться с преобразованием в массив байт.
     
Загрузка...
Похожие Темы - Поясните кто знает
  1. Valkiria
    Ответов:
    1
    Просмотров:
    13
  2. Мария Смирнова
    Ответов:
    0
    Просмотров:
    22
  3. Мария Смирнова
    Ответов:
    0
    Просмотров:
    28
  4. woolf1514
    Ответов:
    19
    Просмотров:
    1.829
  5. Мария Смирнова
    Ответов:
    0
    Просмотров:
    145

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