|
Как работать с бинарными последовательностями в C#?
|
|||
---|---|---|---|
#18+
Вот например: Есть некоторая последовательность, которая xor с dword с первого её байта, потом результат опять xor с dword , но уже со второго байта результата, потом с третьего и т.д. Как подобное можно изобразить на C#? ... |
|||
:
Нравится:
Не нравится:
|
|||
02.03.2019, 15:08 |
|
Как работать с бинарными последовательностями в C#?
|
|||
---|---|---|---|
#18+
И в чем проблема? Код: c# 1. 2. 3. 4.
P.S. Результат XOR типов byte и uint (DWORD) будет иметь тип uint, если что. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.03.2019, 15:24 |
|
Как работать с бинарными последовательностями в C#?
|
|||
---|---|---|---|
#18+
Сон Веры Павловны, Так у вас вроде как каждый байт xor -ится с числом. Приглядитесь к картинке, там xor -ятся в первом заходе с первого по четвертый, во втором заходе со второго по пятый. Причем не байт с числом, а байт последовательности с соответствующим байтом dword ... |
|||
:
Нравится:
Не нравится:
|
|||
02.03.2019, 15:36 |
|
Как работать с бинарными последовательностями в C#?
|
|||
---|---|---|---|
#18+
iskatelsqlСон Веры Павловны, Так у вас вроде как каждый байт xor -ится с числом. Приглядитесь к картинке, там xor -ятся в первом заходе с первого по четвертый, во втором заходе со второго по пятый. Причем не байт с числом, а байт последовательности с соответствующим байтом dword Ну, допустим. Проблема-то у вас в чем заключается? Не значете, как сделать xor? Выше это было показано. Не знаете, как выделить старший/младший байт из uint? Старший - сдвиг влево, младший - & 0xFF. Всё остальные проблемы исключительно алгоритмического характера, все необходимые технические средства для реализации в C# есть. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.03.2019, 16:58 |
|
Как работать с бинарными последовательностями в C#?
|
|||
---|---|---|---|
#18+
Да вопрос вобщемто больше был про то как тут с массивами и указателями работать, мне с асма нужно кусок логики перетащить. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.03.2019, 17:02 |
|
Как работать с бинарными последовательностями в C#?
|
|||
---|---|---|---|
#18+
>iskatelsql,сегодня, 17:02 https://www.sql.ru/forum/actualutils.aspx?action=gotomsg&tid=1309770&msg=21823371][21823371] >Да вопрос вобщемто больше… <Как я понимаю, последовательность у Вас это byte[]? Преобразуйте сиё в MemoryStream и будет Вам счастье. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.03.2019, 17:14 |
|
Как работать с бинарными последовательностями в C#?
|
|||
---|---|---|---|
#18+
iskatelsqlДа вопрос вобщемто больше был про то как тут с массивами и указателями работать, мне с асма нужно кусок логики перетащить. Кхм. Начинает проявляться конкретика. У вас на входе указатель на unmanaged-память? Или результат будет отправлен в unmanaged? Если ни то, ни другое - зачем вам указатели? Почему не обойтись чисто managed-кодом? ... |
|||
:
Нравится:
Не нравится:
|
|||
02.03.2019, 17:32 |
|
Как работать с бинарными последовательностями в C#?
|
|||
---|---|---|---|
#18+
Да можно и обойтись если можно. Только не очень представляю как, глядя в отладчик... Ну не переводятся у меня регистры процессора в выражения Linq в голове автоматически :) Плюс этот кусок кода - какое-то самопальное шифрование файла, в основном и состоящее из подобных xor и остальных псевдорандомных вычислений, которые сложно разбить на отдельные логические части. Я не встречал в туториалах примеры работы с бинарными данными на шарпе, а по форумам тоже маловато гуглится. Если это гораздо сложнее сделать на шарпе чем на сях, думаю сделать отдельную длл, в которую элементарно скопипастить куски кода из отладчика. Правда тот код за собой qt4core тянет, многовато лишнего из за одной функции. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.03.2019, 17:54 |
|
Как работать с бинарными последовательностями в C#?
|
|||
---|---|---|---|
#18+
>iskatelsql, сегодня, 17:54 https://www.sql.ru/forum/actualutils.aspx?action=gotomsg&tid=1309770&msg=21823390][21823390] >Я не встречал в туториалах примеры работы … <Погугли это: MemoryStream, byte[], BitConverter. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.03.2019, 18:55 |
|
Как работать с бинарными последовательностями в C#?
|
|||
---|---|---|---|
#18+
>iskatelsql, сегодня, 17:54 https://www.sql.ru/forum/actualutils.aspx?action=gotomsg&tid=1309770&msg=21823390][21823390] >Я не встречал в туториалах примеры работы … <Погугли это: MemoryStream, byte[], BitConverter. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.03.2019, 18:58 |
|
Как работать с бинарными последовательностями в C#?
|
|||
---|---|---|---|
#18+
>iskatelsql, сегодня, 17:54 https://www.sql.ru/forum/actualutils.aspx?action=gotomsg&tid=1309770&msg=21823390][21823390] >Я не встречал в туториалах примеры работы … <Погугли это: MemoryStream, byte[], BitConverter. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.03.2019, 19:03 |
|
Как работать с бинарными последовательностями в C#?
|
|||
---|---|---|---|
#18+
iskatelsqlДа можно и обойтись если можно. Только не очень представляю как, глядя в отладчик... Ну не переводятся у меня регистры процессора в выражения Linq в голове автоматически :) Плюс этот кусок кода - какое-то самопальное шифрование файла, в основном и состоящее из подобных xor и остальных псевдорандомных вычислений, которые сложно разбить на отдельные логические части. Я не встречал в туториалах примеры работы с бинарными данными на шарпе, а по форумам тоже маловато гуглится. Если это гораздо сложнее сделать на шарпе чем на сях, думаю сделать отдельную длл, в которую элементарно скопипастить куски кода из отладчика. Правда тот код за собой qt4core тянет, многовато лишнего из за одной функции. В C# есть unsafe код, по сути это почти тоже самое что С. Там есть указатели. https://docs.microsoft.com/ru-ru/dotnet/csharp/programming-guide/unsafe-code-pointers/ ... |
|||
:
Нравится:
Не нравится:
|
|||
02.03.2019, 19:37 |
|
Как работать с бинарными последовательностями в C#?
|
|||
---|---|---|---|
#18+
iskatelsql, заранее сорри за отвлечение от темы, но заметьте, что каждый байт вашей последовательности, за исключением первых и последних трех, будет проксорен со всеми 4 байтами dword, т.е. по сути с одним и тем же байтом: операция xor коммутативна и x^a^b^c^d == x^(a^b^c^d) либо ваш алгорим изначально плохо задуман и его стоит поменять (если это такая наколенная криптография и т.п.), либо напрашивается оптимизация: 1) проксорить между собой 4 байта dword и скопировать результат на все 4 байта dword 2) этим dword ксорить последовательность c шагом в dword (а не в байт), за исключением первых и последних 4 байт (не трех - так быстрее из-за выравнивания адресов процессором). а 64-битным qword может оказаться еще быстрее. 3) как обработать первые и последние 4 байта - сами сообразите. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.03.2019, 19:41 |
|
Как работать с бинарными последовательностями в C#?
|
|||
---|---|---|---|
#18+
L1G, Все гораздо проще - я для примера написал одинаковое число чтоб не заморачиваться на деталях, там оно меняется. И код уже есть, даже скомпилированный и работает :), мне его перенести нужно. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.03.2019, 19:47 |
|
|
start [/forum/topic.php?fid=20&msg=39781368&tid=1399067]: |
0ms |
get settings: |
9ms |
get forum list: |
13ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
420ms |
get topic data: |
11ms |
get forum data: |
2ms |
get page messages: |
47ms |
get tp. blocked users: |
1ms |
others: | 11ms |
total: | 522ms |
0 / 0 |