Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Массив байтов 
:(
    Опции темы
Stydent123
Дата 11.7.2015, 08:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 2
Регистрация: 11.7.2015

Репутация: нет
Всего: нет



Здравствуйте, с битами и байтами я никогда не работал, но приходится в быстром темпе изучать. Так вот в чём вопрос.
В файл записаны пакеты данных по 5 байт, пакетов около 1000. Первый байт информационного характера, а 2-5 32-х разрядное число, мне нужно нужно открыть этот файл нечётные пакеты оставить без изменения, а в чётных продублировать 32-х разрядное число и записать его после 5 байта в итоге получится структура:
5 байт
9 байт
5 байт
9 байт и т.д.
И потом всё это записать в файл.
В инете слишком много разношёрстной информации и голова уже от этого кругом.
Спасибо за помощь.
PM MAIL   Вверх
borisbn
Дата 11.7.2015, 12:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 4875
Регистрация: 6.2.2010
Где: Ростов-на-Дону

Репутация: 18
Всего: 135



Код

#include <stdio.h>

int main()
{
    FILE * f_in = fopen( "in_file.dat", "rb" );
    FILE * f_out = fopen( "out_file.dat", "wb" );
    if ( f_in == 0 || f_out == 0 ) {
        printf( "Can't open or create file\n" );
        return 1;
    }
    while ( ! feof( f_int ) ) {
        // even
        char firstByte;
        if ( 1 != fread( & firstByte, 1, sizeof( firstByte ), f_in ) ) {
            break;
        }
        fwrite( & firstByte, 1, sizeof( firstByte ), f_out );
        int secondInt;
        if ( 1 != fread( & secondInt, 1, sizeof( secondInt ), f_in ) ) {
            break;
        }
        fwrite( & secondInt, 1, sizeof( secondInt ), f_out );

        // odd
        if ( 1 != fread( & firstByte, 1, sizeof( firstByte ), f_in ) ) {
            break;
        }
        int secondInt;
        if ( 1 != fread( & secondInt, 1, sizeof( secondInt ), f_in ) ) {
            break;
        }
    }
    fclose( f_in );
    fclose( f_out );
}



--------------------
Женщины отличаются от программистов тем, что у них чары состоят из стрингов
PM MAIL Jabber   Вверх
volatile
Дата 11.7.2015, 13:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2107
Регистрация: 7.1.2011

Репутация: 3
Всего: 85



Цитата(borisbn @  11.7.2015,  12:07 Найти цитируемый пост)
if ( 1 != fread( & secondInt, 1, sizeof( secondInt ), f_in ) )

С чисто сишными легко напутать
borisbn, если не ошибаюсь, здесь при удачном чтении, он вернет sizeof (secondInt)
нужно как минимум переставить местами
Цитата
if ( 1 != fread( & secondInt, 1, sizeof( secondInt ), 1, f_in ) )


PM MAIL   Вверх
borisbn
Дата 11.7.2015, 13:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 4875
Регистрация: 6.2.2010
Где: Ростов-на-Дону

Репутация: 18
Всего: 135



Цитата(volatile @  11.7.2015,  13:08 Найти цитируемый пост)
нужно как минимум переставить местами

Ой.. Да. Писал не в студии, и, соответственно, без подсказчика.

2 Stydent123, обрати внимание, что в fread (лучше в обоих) нужно переставить местами второй и третий параметры


--------------------
Женщины отличаются от программистов тем, что у них чары состоят из стрингов
PM MAIL Jabber   Вверх
Stydent123
Дата 13.7.2015, 07:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 2
Регистрация: 11.7.2015

Репутация: нет
Всего: нет



borisbn, volatile спасибо за помощь! Буду разбираться.
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++ Builder"
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по С++ Builder обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Настоятельно рекомендуем заглянуть в DRKB (Delphi Russian Knowledge Base) - крупнейший в рунете сборник материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Rrader.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C++ Builder | Следующая тема »


 




[ Время генерации скрипта: 0.0457 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.