Слепое преобразование байтового массива в структуру? - PullRequest
1 голос
/ 21 марта 2011

Можно ли, скажем, преобразовать байтовый массив, переданный из более старого приложения C ++, в C #, не зная точно, что это за структура?

Я пытаюсь заново создать старое приложение, которое наша компанияиспользует, но исходный код больше не доступен.Любая помощь будет принята с благодарностью.Спасибо!

Ответы [ 2 ]

4 голосов
/ 21 марта 2011

Вам нужно будет что-то знать о структуре байтового массива, если вы действительно хотите использовать данные, встроенные в массив.Без этой информации массив представляет собой не что иное, как байты - вы можете легко извлечь его в виде байтов, но это будет бесполезно.

Если эта информация недоступна, вы можете использовать hex Editor , чтобы попытаться перепроектировать байтовые данные.

1 голос
/ 21 марта 2011

Вы всегда можете привести адрес первого байта как тип * и надеяться, что он работает. Возможно, есть проблемы с размерами в 32- и 64-битной ОС, хотя это действительно зависит от того, как был скомпилирован код на С ++. Дело в том, что вы должны знать тип, который вы хотите использовать. Вы можете использовать размер байтового массива в качестве индикатора или использовать арифметику указателей для чтения полей. В этом случае вам нужно было бы знать информацию о структуре, если бы она не выглядела как байты.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...