2015-10-13 4 views
0

Я получаю данные как указатель на массив байтов. Я знаю, что это работает построена как три секции, и я должен инициализировать переменную следующих типов:как разобрать необработанные данные в литеральные типы

  1. флаг состояния текущего блока

    enum class data_state { 
        not_received, 
        file_name_only, 
        received,  
        eof 
    }; 
    
  2. Размер третьего раздела с реальным данные

    unsigned long data_size; 
    
  3. данные

    unsigned char* data; 
    

Каков правильный способ обработки необработанных данных в виде массива байтов в переменные типов выше?

ответ

0

Смотрите этот ответ: Convert array of char[] to byte[] and vice versa? C++

void ByteToChar(byte* bytes, char* chars, unsigned int count){ 
for(unsigned int i = 0; i < count; i++) 
    chars[i] = (char)bytes[i]; 
} 

Этот метод использует простой отливку типа для преобразования байта на символ. Поэтому, чтобы определить размер третьего шага, вы должны знать размер массива байтов.

+0

Извините, возможно, мой вопрос был неясен, поэтому мой вопрос: как инициализировать некоторый тип, получив несколько байтов из массива байтов, если я знаю смещение и количество байтов? что-то вроде data_state ds = static_cast (get_bytes (данные, смещение, bytes_count)); – amigo421

Смежные вопросы