C ++ приведение двоичного массива к классу

0

Как я могу применить двоичный массив к известному классу?

По сути, у меня есть массив байтов данных, например:

unsigned char * buff[sizeof(MyClass)];

Я использую unsigned char для каждого байта, поскольку я предполагаю, что это длина 1 байт.

Как я могу передать этот массив тому, что знаю данные? Я взял данные из памяти MyClass и поместил их в этот буфер - теперь мне нужно вернуть его в MyClass.

Я видел reinterpret_cast но я не уверен, что он будет применяться здесь.

  • 0
    У вас есть массив указателей символов. Я сомневаюсь, что это то, что вы хотели. И да, вы можете использовать reinterpret_cast , но почему вы хотите сделать это в первую очередь?
  • 0
    @TaylorBrandstetter Под массивом символьных указателей я на самом деле хотел иметь указатель на массив символов. Как я могу это исправить?
Показать ещё 2 комментария
Теги:
class
casting

1 ответ

2
Лучший ответ

unsigned char* buff[sizeof(MyClass)] - это массив unsigned char*, который, вероятно, будет в 4 или 8 раз больше, чем вы ожидаете. (32 и 64-битные платформы соответственно, хотя существуют архитектуры, которые имеют даже разные размеры указателей - защита от nitpick)

Чтобы ответить на кастинговую часть вопроса, reinterpret_cast<T*>(buff) будет обрабатывать кусок как T*.

  • 0
    Спасибо, я изменил unsigned char* на просто unsigned char .
  • 1
    @ChristianStewart Кроме того, если бы вы указали, для чего вы его используете, я бы, вероятно, сказал вам, что вы делаете это неправильно, и предложил бы лучший способ сделать это, что бы это ни было :). (В общем, это редкий случай, когда вам нужно обрабатывать память как кусок байтов, а не как богатую типами "среду".)
Показать ещё 5 комментариев

Ещё вопросы

Сообщество Overcoder
Наверх
Меню