Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.88/8: Рейтинг темы: голосов - 8, средняя оценка - 4.88
15 / 9 / 1
Регистрация: 23.02.2012
Сообщений: 135

Работа с указателями и битовые операции (с C++ в C#)

17.05.2013, 14:21. Показов 1742. Ответов 8
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Помогите перевести это в эффективный C# код
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
int UnknownFunc0001(signed int a1)
{
  return ((a1 >> 24) & 0xFF) + ((((a1 >> 16) & 0xFF) + ((((BYTE)a1 << 8) + ((a1 >> 8) & 0xFF)) << 8)) << 8);
}
int CryptPacket(DWORD* pBuffer, signed int a2, int iKey)
{
    int result = ((a2&0xFF00)|(a2&0xFC))/4;
    if (result > 0)
    {
        int v4 = 0;
        DWORD* v6 = pBuffer;
        int v7 = ~iKey;
        for (int i = ~iKey; ; v7 = i )
        {
            a2 = UnknownFunc0001(*v6 ^ v7);
            for(int v8 = 0; v8 < 4; v8 += 2)
            {
                *((char*)&a2+v8) = (v8 | ((BYTE)v8 << v8) | UnknownBytes[((BYTE)(v4-(DWORD)&a2) + (BYTE)&a2 + (BYTE)v8) & 0xF] | 0xA5) ^ *((BYTE *)&a2 + v8);
            }
            ++v4;
            *v6 = iKey ^ a2;
            v6++;
            if(v4 >= result)
                break;
        }
    }
    return result;
}
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
17.05.2013, 14:21
Ответы с готовыми решениями:

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

Битовые операции, битовые поля.
Здравствуйте! Еслть 4 диапазона чисел: 0-100, 0-100, 0-6000, 0-3. Сделать в виде битовых операций. Записать в unsigned int. Использовать...

Битовые последовательности и битовые операции
Вычислить сумму по модулю 2 всех бит в позициях, номер которых кратен 2^k. (1, 2, 4, 8, 16, 32). Исходное число содержит 8 байт. ...

8
192 / 192 / 29
Регистрация: 03.12.2009
Сообщений: 853
17.05.2013, 14:25
Цитата Сообщение от sooqua Посмотреть сообщение
Помогите
тоесть сделайте за меня? Что именно затрудняет вас в переводе?
1
15 / 9 / 1
Регистрация: 23.02.2012
Сообщений: 135
17.05.2013, 23:45  [ТС]
Цитата Сообщение от da1z Посмотреть сообщение
тоесть сделайте за меня? Что именно затрудняет вас в переводе?
Да, сделайте за меня ;d
Затрудняет нехватка знаний. Мне нужна только эта функция....

Добавлено через 2 минуты
Не понимаю чем заменить работу с указателями и побитовыми опециями...

Добавлено через 26 секунд
В C# ведь нельзя работать с указателями

Добавлено через 1 час 8 минут
никто не поможет?(

Добавлено через 6 часов 49 минут
Тема актуальна
0
 Аватар для dr.curse
404 / 360 / 36
Регистрация: 11.10.2010
Сообщений: 1,907
17.05.2013, 23:52
Цитата Сообщение от sooqua Посмотреть сообщение
В C# ведь нельзя работать с указателями
для работы с указателями есть unsafe http://msdn.microsoft.com/en-u... 71%29.aspx
0
15 / 9 / 1
Регистрация: 23.02.2012
Сообщений: 135
17.05.2013, 23:54  [ТС]
Цитата Сообщение от aram_gyumri Посмотреть сообщение
для работы с указателями есть unsafe http://msdn.microsoft.com/en-u... 71%29.aspx
Спасибо. А можно ли это переписать в "безопасный" код? (без использования unsafe)
0
 Аватар для dr.curse
404 / 360 / 36
Регистрация: 11.10.2010
Сообщений: 1,907
18.05.2013, 00:18
sooqua, можно переделть на массивы
0
15 / 9 / 1
Регистрация: 23.02.2012
Сообщений: 135
18.05.2013, 05:09  [ТС]
Удалите тему.
0
Эксперт WindowsАвтор FAQ
 Аватар для Dragokas
18031 / 7734 / 892
Регистрация: 25.12.2011
Сообщений: 11,502
Записей в блоге: 16
18.05.2013, 10:17
sooqua, ???

Темы не удаляются (читаем правила).

Если Вы смогли самостоятельно найти решение, пожалуйста, выложите код и пояснение.
Возможно, другим пользователям это окажется полезным.
0
15 / 9 / 1
Регистрация: 23.02.2012
Сообщений: 135
18.05.2013, 17:05  [ТС]
Я сделал так:
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
        public unsafe int Crypt(byte[] Buffer, uint Offset, int Size, int Key)
        {
            int result = (Size & 0xFF00) | (Size & 0xFC) / 4;
            if (result > 0)
            {
                fixed (byte* p = Buffer)
                {
                    uint* pBuffer = (uint*)((int)(p + Offset));
                    for (int i = 0; i < result; i++, pBuffer++)
                    {
                        Size = (int)((((*pBuffer ^ ~Key) >> 24) & 0xFF) + (((((*pBuffer ^ ~Key) >> 16) & 0xFF) + ((((byte)(*pBuffer ^ ~Key) << 8) + (((*pBuffer ^ ~Key) >> 8) & 0xFF)) << 8)) << 8));
                        for (byte j = 0; j < 4; j++)
                        {
                            *((byte*)&Size + j) = (byte)((j | (j << j) | Mungify_Table[((byte)(i - (uint)&Size) + (byte)&Size + j) & 0xF] | 0xA5) ^ *((byte*)&Size + j));
                        }
                        *pBuffer = (uint)(Key ^ Size);
                    }
                }
            }
            return result;
        }
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
18.05.2013, 17:05
Помогаю со студенческими работами здесь

Используя только битовые операции и операции арифметического сложения и вычитания, вычислите число
Даны числа x и y. Используя только битовые операции и операции арифметического сложения и вычитания, вычислите число z=(27x+) mod 4. ...

Битовые операции: работа с целым числом (long) как с "массивом" из четырех однобайтовых чисел (char)
задали задачу, не понимаю, что хотят от меня в условии:/ Вот само условие: Напишите функцию, позволяющую работать с целым числом (long)...

Битовые операции и операции смещения языка С
Доброго времени суток господа,помогите пожалуйста.Есть 2 кода к задаче,первый работает верно(переводит обычные числа в 16-ти ричные),а...

Битовые операции
Добрый день! Помогите пожалуйста написать программу. Дано короткое целое неотрицательное число(2 байта). Выполнить инверсию ...

Битовые операции
Приветствую! Изучаю C++, не могу освоить битовые операции (перемещение, исключающие или, инвертирование всякое). Просто не понимаю...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru