|
Разбираем массив байтов типа Object
|
|||
---|---|---|---|
#18+
Доброго времени суток! Собственно сабж в сабже =) Имею некоторый массив байтов типа object. В этом массиве "зашифрованы" некоторое кол-во нужных мне данных (кол-во переменных и их порядок известны) разных типов (string, float, int и тд). Задача - разобрать этот массив и вычленить необходимую информацию. Что делаль: 1) Пробую просто: Код: c# 1.
Логично не работает, просит byte[]. 2) Пробую быстро: Код: c# 1. 2. 3. 4. 5. 6. 7. 8.
Что-то получаю, но получаю ахинею. В bytesArr лежит вообще что-то "левое", а не исходный массив. Еще и сам массив из исходных 578 элементов вырос до 606. 3) Пробую BinaryReader: Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9.
Получаю exeption: Unable to read beyond the end of the stream. 4) пробую с BinaryReader.PeekChar: Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12.
В тело цикла не попадаю, видать reader.PeekChar() не находит следующий символ, а в самом reader _buffer лежит та же ерунда, что и в попытке №2, но всего 256 элементов. Короче, запутался и замучился. Ребят, как этот массив разобрать? Зы: По форуму смотрел, темы есть, не помогло. Гугль читал, инфы много, не получилось. MS FM курил, но видать слабО... ... |
|||
:
Нравится:
Не нравится:
|
|||
21.02.2019, 10:53 |
|
Разбираем массив байтов типа Object
|
|||
---|---|---|---|
#18+
Мысль про банальный тайпкастинг к byte[] в голову не приходила? ... |
|||
:
Нравится:
Не нравится:
|
|||
21.02.2019, 11:25 |
|
Разбираем массив байтов типа Object
|
|||
---|---|---|---|
#18+
mozgen, Код: c# 1. 2. 3. 4. 5. 6. 7.
... |
|||
:
Нравится:
Не нравится:
|
|||
21.02.2019, 11:25 |
|
Разбираем массив байтов типа Object
|
|||
---|---|---|---|
#18+
Сон Веры Павловны, Приходила. Варианты реализации подскажешь?) ... |
|||
:
Нравится:
Не нравится:
|
|||
21.02.2019, 14:34 |
|
Разбираем массив байтов типа Object
|
|||
---|---|---|---|
#18+
Petro123, Эмм... не понял, а зачем? можно как-нибудь подробнее.. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.02.2019, 14:35 |
|
Разбираем массив байтов типа Object
|
|||
---|---|---|---|
#18+
mozgenСон Веры Павловны, Приходила. Варианты реализации подскажешь?) Код: c# 1. 2.
... |
|||
:
Нравится:
Не нравится:
|
|||
21.02.2019, 14:52 |
|
Разбираем массив байтов типа Object
|
|||
---|---|---|---|
#18+
mozgenPetro123, Эмм... не понял, а зачем? можно как-нибудь подробнее..что зачем? По ООП я твои зашифрованные данные записал в класс myObj. Пропиши там твои поля и пробуй. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.02.2019, 15:06 |
|
Разбираем массив байтов типа Object
|
|||
---|---|---|---|
#18+
Cat2, ))) ... |
|||
:
Нравится:
Не нравится:
|
|||
21.02.2019, 15:06 |
|
Разбираем массив байтов типа Object
|
|||
---|---|---|---|
#18+
mozgenзашифрованы" некоторое кол-во нужных мне данных (кол-во переменных и их порядок известны) разных типов (string, float, int и тд)покажи класс с этими переменными ... |
|||
:
Нравится:
Не нравится:
|
|||
21.02.2019, 15:08 |
|
Разбираем массив байтов типа Object
|
|||
---|---|---|---|
#18+
Petro123mozgenзашифрованы" некоторое кол-во нужных мне данных (кол-во переменных и их порядок известны) разных типов (string, float, int и тд)покажи класс с этими переменными Ты думаешь там есть класс? ... |
|||
:
Нравится:
Не нравится:
|
|||
21.02.2019, 17:55 |
|
Разбираем массив байтов типа Object
|
|||
---|---|---|---|
#18+
Cat2, )) я просто напомнил, что "руки мыть хорошо перед едой". Ну и загрузил ТС работой. Пусть работает. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.02.2019, 18:56 |
|
Разбираем массив байтов типа Object
|
|||
---|---|---|---|
#18+
Petro123покажи класс с этими переменными Cat2Ты думаешь там есть класс? Совершенно верно, нет у меня никакого класса. По сути, я и что хранится в этом массиве знаю условно приблизительно. Petro123Ну и загрузил ТС работой. Пусть работает. Вот уж спасибо! =) В любом случае, я просил подсказать в какую сторону копать. Будем пробовать. =) ... |
|||
:
Нравится:
Не нравится:
|
|||
22.02.2019, 06:07 |
|
Разбираем массив байтов типа Object
|
|||
---|---|---|---|
#18+
mozgen, Уверен в том, что тебе нужна десериализвция? ... |
|||
:
Нравится:
Не нравится:
|
|||
22.02.2019, 08:08 |
|
Разбираем массив байтов типа Object
|
|||
---|---|---|---|
#18+
mozgenПо сути, я и что хранится в этом массиве знаю условно приблизительно.не выйдет. Надо точно знать что там. Иначе заголовок нужен. ... |
|||
:
Нравится:
Не нравится:
|
|||
22.02.2019, 08:14 |
|
Разбираем массив байтов типа Object
|
|||
---|---|---|---|
#18+
mozgenПо сути, я и что хранится в этом массиве знаю условно приблизительно. А что это такое, откуда берётся? Чем данные "зашифрованы"? Может Protocol Buffers какой? ... |
|||
:
Нравится:
Не нравится:
|
|||
22.02.2019, 08:43 |
|
Разбираем массив байтов типа Object
|
|||
---|---|---|---|
#18+
Изопропил, нееет, не уверен =) Petro123не выйдет. Надо точно знать что там. Иначе заголовок нужен. Понятно. Скажем так, у меня есть некоторый "конфигурационный" файл, в котором описана структура. Например: Код: xml 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12.
По идее, в получаемом мной объекте, элементы массива должны располагаться именно в том порядке, в каком указаны в конфиге. Ну допустим, разобрать этот конфиг и создать необходимый класс со всеми подкласами я могу. В результате получим что-то типа такого: Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27.
Ок, а дальше что? Код: c# 1. 2. 3. 4. 5.
Или как? ... |
|||
:
Нравится:
Не нравится:
|
|||
22.02.2019, 08:52 |
|
Разбираем массив байтов типа Object
|
|||
---|---|---|---|
#18+
Дмитрий Мух, Читаю с PLC. Зашифрованы вообще не правильное слово, разве что "удобное". Я так понимаю, что это эдакая "унификация". Вместо того, чтоб постоянно слать/читать овермного переменных разных типов, их проще все собрать в unsignedByte массив и скопом отправить клиенту. А клиенту зная структуру можно их разобрать в удобоваримый вид. вот задачу клиента и пытаюсь реализовать. ... |
|||
:
Нравится:
Не нравится:
|
|||
22.02.2019, 08:57 |
|
Разбираем массив байтов типа Object
|
|||
---|---|---|---|
#18+
mozgen, Вы изобрели сериализацию? ... |
|||
:
Нравится:
Не нравится:
|
|||
22.02.2019, 09:06 |
|
Разбираем массив байтов типа Object
|
|||
---|---|---|---|
#18+
mozgenесть некоторый "конфигурационный" файл, в котором описана структура.его руками пишут? ... |
|||
:
Нравится:
Не нравится:
|
|||
22.02.2019, 09:07 |
|
Разбираем массив байтов типа Object
|
|||
---|---|---|---|
#18+
mozgenЯ так понимаю, что это эдакая "унификация". Вместо того, чтоб постоянно слать/читать овермного переменных разных типов, их проще все собрать в unsignedByte массив и скопом отправить клиенту. А клиенту зная структуру можно их разобрать в удобоваримый вид. вот задачу клиента и пытаюсь реализовать.бред какой то. ... |
|||
:
Нравится:
Не нравится:
|
|||
22.02.2019, 09:08 |
|
Разбираем массив байтов типа Object
|
|||
---|---|---|---|
#18+
Petro123, Petro123 Вы изобрели сериализацию? Не понял. Petro123 его руками пишут? Угу. Пишут. Один раз. когда-то давно. Petro123 бред какой то. Что есть, то и едим. =) ... |
|||
:
Нравится:
Не нравится:
|
|||
22.02.2019, 09:15 |
|
Разбираем массив байтов типа Object
|
|||
---|---|---|---|
#18+
mozgen, Конфигурации файл это хорошо, Данные как записывают? ... |
|||
:
Нравится:
Не нравится:
|
|||
22.02.2019, 09:25 |
|
Разбираем массив байтов типа Object
|
|||
---|---|---|---|
#18+
Изопропил, Куда записывают? в массив? - понятия не имею. По сути, у меня в ту логику и доступа-то нет... ... |
|||
:
Нравится:
Не нравится:
|
|||
22.02.2019, 09:31 |
|
Разбираем массив байтов типа Object
|
|||
---|---|---|---|
#18+
mozgenPetro123Вы изобрели сериализацию? Не понял.прочтите в википедии. Это передача классов по проводам не в виде электронов, а в виде байт. У вас же то же самое? ... |
|||
:
Нравится:
Не нравится:
|
|||
22.02.2019, 09:35 |
|
Разбираем массив байтов типа Object
|
|||
---|---|---|---|
#18+
mozgen, Если конфиг не меняется (вам решать), то делаете из него не ваши классы, а руками читаете xml и читаете стрим с байтами. Всё. ... |
|||
:
Нравится:
Не нравится:
|
|||
22.02.2019, 09:39 |
|
Разбираем массив байтов типа Object
|
|||
---|---|---|---|
#18+
Petro123, =) Спасибо за подсказку. Но что такое сериализация я знаю, я не понял почему Petro123Вы изобрели сериализацию? ... |
|||
:
Нравится:
Не нравится:
|
|||
22.02.2019, 09:40 |
|
Разбираем массив байтов типа Object
|
|||
---|---|---|---|
#18+
Petro123, При всем уважении, вопрос и был в Petro123и читаете стрим с байтами. Как это сделать-то? ... |
|||
:
Нравится:
Не нравится:
|
|||
22.02.2019, 09:47 |
|
Разбираем массив байтов типа Object
|
|||
---|---|---|---|
#18+
mozgenИзопропил, Куда записывают? в массив? - понятия не имею. По сути, у меня в ту логику и доступа-то нет... Значит прочитать нужно неизвестно что? ... |
|||
:
Нравится:
Не нравится:
|
|||
22.02.2019, 09:47 |
|
Разбираем массив байтов типа Object
|
|||
---|---|---|---|
#18+
mozgenPetro123, При всем уважении, вопрос и был в Petro123и читаете стрим с байтами. Как это сделать-то?я код выше дал ... |
|||
:
Нравится:
Не нравится:
|
|||
22.02.2019, 09:52 |
|
Разбираем массив байтов типа Object
|
|||
---|---|---|---|
#18+
Petro123, Хорошо, давай конкретизирую: каким образом мне из потока последовательно вычленять данные в различных форматах? ... |
|||
:
Нравится:
Не нравится:
|
|||
22.02.2019, 10:08 |
|
Разбираем массив байтов типа Object
|
|||
---|---|---|---|
#18+
mozgenPetro123, Хорошо, давай конкретизирую: каким образом мне из потока последовательно вычленять данные в различных форматах? Petro123 Код: c# 1.
Непонятно? Начните писать. Хотя бы 5 минут. ... |
|||
:
Нравится:
Не нравится:
|
|||
22.02.2019, 10:41 |
|
Разбираем массив байтов типа Object
|
|||
---|---|---|---|
#18+
>mozgen, сегодня, 10:08 https://www.sql.ru/forum/actualutils.aspx?action=gotomsg&tid=1309411&msg=21817055][21817055] >Хорошо, давай конкретизирую: … <Попробуй так Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58.
... |
|||
:
Нравится:
Не нравится:
|
|||
22.02.2019, 10:45 |
|
Разбираем массив байтов типа Object
|
|||
---|---|---|---|
#18+
ВМоисеев, По моему варианту там кода 10 строк и без сериализации. ... |
|||
:
Нравится:
Не нравится:
|
|||
22.02.2019, 10:52 |
|
Разбираем массив байтов типа Object
|
|||
---|---|---|---|
#18+
>Petro123, сегодня, 10:52 https://www.sql.ru/forum/actualutils.aspx?action=gotomsg&tid=1309411&msg=21817091][21817091] >По моему варианту… <Так это же здорово, если есть варианты. Только у нас с Вами несколько разные предпосылки - мне мало сформировать xms, надо и упаковать и шифрануть ... |
|||
:
Нравится:
Не нравится:
|
|||
22.02.2019, 11:28 |
|
Разбираем массив байтов типа Object
|
|||
---|---|---|---|
#18+
>Petro123, сегодня, 10:52 https://www.sql.ru/forum/actualutils.aspx?action=gotomsg&tid=1309411&msg=21817091][21817091] >По моему варианту… <Так это же здорово, если есть варианты. Только у нас с Вами несколько разные предпосылки - мне мало сформировать xms, надо и упаковать и шифрануть ... |
|||
:
Нравится:
Не нравится:
|
|||
22.02.2019, 11:44 |
|
Разбираем массив байтов типа Object
|
|||
---|---|---|---|
#18+
ВМоисеевТак это же здорово, если есть варианты.+1 ... |
|||
:
Нравится:
Не нравится:
|
|||
22.02.2019, 11:52 |
|
Разбираем массив байтов типа Object
|
|||
---|---|---|---|
#18+
Я так и не въехал, в каком виде приходит массив, но если это работает: Код: c# 1.
то все просто. Код: xml 1. 2. 3. 4. 5.
20 байт строка + 4 байта float + 8 байт int = bytesArr.Length должно быть == 32. Или делиться на 32 без остатка - если таких записей в массиве много. Если это правило не исполняется - последняя запись битая или вообще прислали лажу. Возможно на уровне документации, а не байтов. Код: c# 1. 2. 3. 4. 5. 6.
... |
|||
:
Нравится:
Не нравится:
|
|||
22.02.2019, 21:45 |
|
Разбираем массив байтов типа Object
|
|||
---|---|---|---|
#18+
Antonariy Код: c# 1.
уверен, что именно это требуется? ... |
|||
:
Нравится:
Не нравится:
|
|||
22.02.2019, 21:56 |
|
Разбираем массив байтов типа Object
|
|||
---|---|---|---|
#18+
ИзопропилAntonariy Код: c# 1.
уверен, что именно это требуется?Нет. В VB6 для этого использовал бы CopyMemory, ей пофиг, стринг-не стринг. По дотнетом этим не занимался, но принцип ведь тот же. ... |
|||
:
Нравится:
Не нравится:
|
|||
22.02.2019, 22:39 |
|
Разбираем массив байтов типа Object
|
|||
---|---|---|---|
#18+
Antonariy, проще: Код: c# 1. 2. 3. 4.
... |
|||
:
Нравится:
Не нравится:
|
|||
23.02.2019, 10:00 |
|
Разбираем массив байтов типа Object
|
|||
---|---|---|---|
#18+
еще проще: Код: vbnet 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12.
наверняка в c# тоже так можно, только без CopyMemory. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.02.2019, 10:25 |
|
Разбираем массив байтов типа Object
|
|||
---|---|---|---|
#18+
Antonariy, Операции с памятью, указателями в одно время на историческом пути посчитали опасными, и не приветствуются. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.02.2019, 10:42 |
|
Разбираем массив байтов типа Object
|
|||
---|---|---|---|
#18+
>Antonariy, сегодня, 10:25 https://www.sql.ru/forum/actualutils.aspx?action=gotomsg&tid=1309411&msg=21818502][21818502] >наверняка в c# тоже так можно… <Можно Код: c# 1. 2.
Только для чего это надо? Что будешь делать с сериализацией? Иногда удобнее работать с полями. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.02.2019, 11:01 |
|
Разбираем массив байтов типа Object
|
|||
---|---|---|---|
#18+
ВМоисеев>Antonariy, сегодня, 10:25 https://www.sql.ru/forum/actualutils.aspx?action=gotomsg&tid=1309411&msg=21818502][21818502] >наверняка в c# тоже так можно… <Можно Код: c# 1. 2.
Только для чего это надо? Что будешь делать с сериализацией? Иногда удобнее работать с полями.Вообще-то тут обратная операция - десериализация в тип. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.02.2019, 11:09 |
|
Разбираем массив байтов типа Object
|
|||
---|---|---|---|
#18+
Petro123Antonariy, Операции с памятью, указателями в одно время на историческом пути посчитали опасными, и не приветствуются.прям боюсь-боюсь ... |
|||
:
Нравится:
Не нравится:
|
|||
25.02.2019, 11:10 |
|
Разбираем массив байтов типа Object
|
|||
---|---|---|---|
#18+
AntonariyPetro123Antonariy, Операции с памятью, указателями в одно время на историческом пути посчитали опасными, и не приветствуются.прям боюсь-боюсьпротив ветра, оно знаешь,.....)))) ... |
|||
:
Нравится:
Не нравится:
|
|||
25.02.2019, 11:35 |
|
Разбираем массив байтов типа Object
|
|||
---|---|---|---|
#18+
>Antonariy, сегодня, 11:09 https://www.sql.ru/forum/actualutils.aspx?action=gotomsg&tid=1309411&msg=21818527][21818527] >Вообще-то… <Можно так: Код: c# 1.
Но с какой целью? ... |
|||
:
Нравится:
Не нравится:
|
|||
25.02.2019, 11:48 |
|
Разбираем массив байтов типа Object
|
|||
---|---|---|---|
#18+
Petro123Antonariyпропущено... прям боюсь-боюсьпротив ветра, оно знаешь,.....))))знаю, галсами. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.02.2019, 12:19 |
|
Разбираем массив байтов типа Object
|
|||
---|---|---|---|
#18+
mozgen, Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26.
... |
|||
:
Нравится:
Не нравится:
|
|||
25.02.2019, 23:47 |
|
|
start [/forum/topic.php?all=1&fid=20&tid=1399072]: |
0ms |
get settings: |
11ms |
get forum list: |
13ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
36ms |
get topic data: |
10ms |
get forum data: |
3ms |
get page messages: |
69ms |
get tp. blocked users: |
2ms |
others: | 266ms |
total: | 418ms |
0 / 0 |