Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > C++ Builder
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 11.07.2015, 07:49   #1
Stydent123
Новичок
Джуниор
 
Регистрация: 11.07.2015
Сообщений: 2
По умолчанию Массив байтов помогите разобраться

Здравствуйте, с битами и байтами я никогда не работал, но приходится в быстром темпе изучать. Так вот в чём вопрос.
В файл записаны пакеты данных по 5 байт, пакетов около 1000. Первый байт информационного характера, а 2-5 32-х разрядное число, мне нужно нужно открыть этот файл нечётные пакеты оставить без изменения, а в чётных продублировать 32-х разрядное число и записать его после 5 байта в итоге получится структура:
5 байт
9 байт
5 байт
9 байт и т.д.
И потом всё это записать в файл.
В инете слишком много разношёрстной информации и голова уже от этого кругом.
Спасибо за помощь.
Stydent123 вне форума Ответить с цитированием
Старый 11.07.2015, 19:57   #2
Krasiosoft
Форумчанин
 
Аватар для Krasiosoft
 
Регистрация: 01.06.2015
Сообщений: 497
По умолчанию

Чтение данных по 5 байт с файла:
Код:
 
#pragma pack(1)
typedef struct _File1Struct{
    unsigned char firstByte;
    unsigned long BytesFrom2to5;
}File1Struct, *PFile1Struct;
#pragma pack()

#define file_name "file1.txt"


...
    FILE *fp;

    if(!(fp=fopen(file_name,"rb"))){
        printf("Error opening file.");
        return 0;
    }

    File1Struct tempData;

    while(fread(&tempData,sizeof(File1Struct),1,fp)){
        // обрабатываете как нужно:
        // tempData.firstByte
        // tempData.BytesFrom2to5
    }

    fclose(fp);
...
По аналогии запись в другой файл с помощь:
Код:
fwrite(&tempData,sizeof(File1Struct),1,fp);
// и если нужно:
fwrite(&tempData.BytesFrom2to5,sizeof(unsigned long),1,fp);
Если помог, буду очень благодарен за Ваш отзыв (весы в левой нижней части сообщения).

Последний раз редактировалось Krasiosoft; 11.07.2015 в 20:04.
Krasiosoft вне форума Ответить с цитированием
Старый 13.07.2015, 07:26   #3
Stydent123
Новичок
Джуниор
 
Регистрация: 11.07.2015
Сообщений: 2
По умолчанию

Krasiosoft, спасибо за помощь, буду разбираться!
Stydent123 вне форума Ответить с цитированием
Старый 13.07.2015, 21:34   #4
Krasiosoft
Форумчанин
 
Аватар для Krasiosoft
 
Регистрация: 01.06.2015
Сообщений: 497
По умолчанию

Но если речь идет именно о C++ Builder'e, то скорее всего, будет корректнее использовать его компонент TFileStream или функции FileOpen и FileRead.

Я привел пример чтения файла средствами языка С.
Если помог, буду очень благодарен за Ваш отзыв (весы в левой нижней части сообщения).
Krasiosoft вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Поворот TBitMap через массив байтов Adult_Master Мультимедиа в Delphi 11 11.07.2015 22:05
массив байтов в dll BARNEY Общие вопросы Delphi 2 10.06.2011 18:52
FileStream Read и массив байтов bondik Общие вопросы .NET 5 06.10.2010 22:36
assembler массив байтов AlexandrHouse Помощь студентам 5 01.02.2010 19:03
Помогите разобраться в задаче на массив WerMut Помощь студентам 1 04.11.2009 16:35