![]() |
|
Модераторы: Partizan, gambit |
![]()
|
|
| zss |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 708 Регистрация: 17.6.2004 Репутация: нет Всего: 2 |
1.есть структура. нужно ее преобразовать в массив байт
не получается. Как вообще в C# берется адрес? 2. Нужно также сделать обратно из массива байт в структуру 3. Если ли в C# union? 4. Где бы хорошую книжечку скачать нахаляву |
|||
|
||||
| zss |
|
||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 708 Регистрация: 17.6.2004 Репутация: нет Всего: 2 |
P.S. И еще - есть структура
тоесть у нее есть конструктор, но не получается создать
|
||||
|
|||||
| Void |
|
|||
![]() λcat.lolcat ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2206 Регистрация: 16.11.2004 Где: Zürich Репутация: 25 Всего: 173 |
1, 2. Используй сериализацию.
Смотри System.Runtime.InteropServices.StructLayoutAttribute Синтаксис создания структур и классов в C# такой:
-------------------- “Coming back to where you started is not the same as never leaving.” — Terry Pratchett |
|||
|
||||
| zss |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 708 Регистрация: 17.6.2004 Репутация: нет Всего: 2 |
нашел в хелпе пример с BinaryFormatter но в хелпе его namespace System.Runtime.Serialization.Formatters.Binary у меня такого пространства нет не совсем понял чем он может помочь |
|||
|
||||
| Void |
|
||||||
![]() λcat.lolcat ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2206 Регистрация: 16.11.2004 Где: Zürich Репутация: 25 Всего: 173 |
Например:
эквивалентно
Быть не может Это сообщение отредактировал(а) Void - 1.5.2006, 20:51 -------------------- “Coming back to where you started is not the same as never leaving.” — Terry Pratchett |
||||||
|
|||||||
| zss |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 708 Регистрация: 17.6.2004 Репутация: нет Всего: 2 |
фреймворк 2.0
сериализация вроде получилась через Marshal остался такой вопрос. Я читаю буфер данных. Он может быть переменной длинны. Единственное что у него фиксированно - заголовок. Как в C# можно накладывать структуры на определенные адреса ? Я так понимаю сериализация здесь не поможет по Explicit что имеется ввиду ? |
|||
|
||||
| ivashkanet |
|
|||
![]() Кодю потиху ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 3684 Регистрация: 23.2.2006 Где: Гомель, Беларусь Репутация: 47 Всего: 149 |
Даа... Тебе точна книжка нужна. Любая. Посмотри здесь есть курс по С#. А еще есть книга Тролелсена, набири в поиске Такое в С# не приветствуется. Что хоть за структура? Покажи. Все преобразования, обычно, идут по осмысленные, исходя из вида структуры
|
|||
|
||||
| zss |
|
||||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 708 Регистрация: 17.6.2004 Репутация: нет Всего: 2 |
и что-то таким макаром не получается
тоесть эквивалент
3 день на C# [/quote] [/quote] Это сообщение отредактировал(а) zss - 1.5.2006, 21:21 |
||||||
|
|||||||
| Void |
|
|||
![]() λcat.lolcat ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2206 Регистрация: 16.11.2004 Где: Zürich Репутация: 25 Всего: 173 |
Смещение каждого поля задается явно. Странно. Есть там пространство имен System.Runtime.Serialization.Formatters.Binary. И references никакие дополнительные не нужны для него. Добавлено @ 21:18 Приведи C++ный аналог, я переведу. -------------------- “Coming back to where you started is not the same as never leaving.” — Terry Pratchett |
|||
|
||||
| ivashkanet |
|
|||
![]() Кодю потиху ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 3684 Регистрация: 23.2.2006 Где: Гомель, Беларусь Репутация: 47 Всего: 149 |
Чуть опоздал...
Имея скелет (имя) структуры и применяя преобразование
Здесь Car -- структура, Object -- по сути ссылка на объект в памяти, по сути -- адрес. P.S. И вообще, забудь про адреса, это тебе не С/C++. Здесь вся работа идет с именами переменных, которые, в принципе, ссылки на структуры и классы. |
|||
|
||||
| Void |
|
|||
![]() λcat.lolcat ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2206 Регистрация: 16.11.2004 Где: Zürich Репутация: 25 Всего: 173 |
Ты уверен, что именно так? Слегка бессмысленно. Добавлено @ 21:30 ivashkanet, увы, думаю, твой совет не очень уместен. Я так понял, тут идет интероп с каким-то протоколом или форматом. -------------------- “Coming back to where you started is not the same as never leaving.” — Terry Pratchett |
|||
|
||||
| zss |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 708 Регистрация: 17.6.2004 Репутация: нет Всего: 2 |
С++ аналог извращенный проблемма в том, что поля определеняются через заголовок а после заголовка могут быть различные структуры данных это только заголовок
Добавлено @ 21:33 а прочитав его нужно еще бегать по различным типам структур |
|||
|
||||
| mr.DUDA |
|
|||
|
3D-маньяк ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 8244 Регистрация: 27.7.2003 Где: город-герой Минск Репутация: 110 Всего: 232 |
Там где встречается union, нужно забивать на наложение и использовать в struct-е переменную самой большой длины, какая есть внутри union-а. В C# нет аналога union-у, имхо.
-------------------- ![]() |
|||
|
||||
| Void |
|
|||
![]() λcat.lolcat ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2206 Регистрация: 16.11.2004 Где: Zürich Репутация: 25 Всего: 173 |
zss, прошу прощения, я почему-то пропустил твой ответ. Это будет выглядеть примерно так:
mr.DUDA, StructLayoutAttribute и обеспечивает реализацию union, без него куча интеропа не работала бы. -------------------- “Coming back to where you started is not the same as never leaving.” — Terry Pratchett |
|||
|
||||
| zss |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 708 Регистрация: 17.6.2004 Репутация: нет Всего: 2 |
блин - как все сложно то... есть функция, которая хочет f (byte[] buffer) у меня есть ushort[] array хочу ей его подсунуть, но никак титы не приведу (byte *)&array[0] - не нравится как простые типы то привести ? |
|||
|
||||
![]()
|
| Прежде чем создать тему, посмотрите сюда: | |
|
|
Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов. Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :) Так же не забывайте отмечать свой вопрос решенным, если он таковым является :) Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, THandle. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Общие вопросы по .NET и C# | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |