Как я могу применить двоичный массив к известному классу?
По сути, у меня есть массив байтов данных, например:
unsigned char * buff[sizeof(MyClass)];
Я использую unsigned char
для каждого байта, поскольку я предполагаю, что это длина 1 байт.
Как я могу передать этот массив тому, что знаю данные? Я взял данные из памяти MyClass и поместил их в этот буфер - теперь мне нужно вернуть его в MyClass
.
Я видел reinterpret_cast
но я не уверен, что он будет применяться здесь.
unsigned char* buff[sizeof(MyClass)]
- это массив unsigned char*
, который, вероятно, будет в 4
или 8
раз больше, чем вы ожидаете. (32 и 64-битные платформы соответственно, хотя существуют архитектуры, которые имеют даже разные размеры указателей - защита от nitpick)
Чтобы ответить на кастинговую часть вопроса, reinterpret_cast<T*>(buff)
будет обрабатывать кусок как T*
.
unsigned char*
на просто unsigned char
.
reinterpret_cast
, но почему вы хотите сделать это в первую очередь?