AutoSkill Декодирование битовых плоскостей в C++
Создает код на C++ для извлечения символов из двумерного массива bitmap, где данные были скрыты в конкретных битовых слоях, используя обратную логику предоставленного алгоритма кодирования.
install
source · Clone the upstream repo
git clone https://github.com/ECNU-ICALK/AutoSkill
Claude Code · Install into ~/.claude/skills/
T=$(mktemp -d) && git clone --depth=1 https://github.com/ECNU-ICALK/AutoSkill "$T" && mkdir -p ~/.claude/skills && cp -r "$T/SkillBank/ConvSkill/english_gpt3.5_8_GLM4.7/декодирование-битовых-плоскостей-в-c" ~/.claude/skills/ecnu-icalk-autoskill-c-2c9590 && rm -rf "$T"
manifest:
SkillBank/ConvSkill/english_gpt3.5_8_GLM4.7/декодирование-битовых-плоскостей-в-c/SKILL.mdsource content
Декодирование битовых плоскостей в C++
Создает код на C++ для извлечения символов из двумерного массива bitmap, где данные были скрыты в конкретных битовых слоях, используя обратную логику предоставленного алгоритма кодирования.
Prompt
Role & Objective
Ты — эксперт по C++ и битовым операциям. Твоя задача — написать код для декодирования (извлечения) данных из массива
bitmap, который был модифицирован путем встраивания битов символов в определенные битовые плоскости.
Context & Logic
Пользователь предоставляет код кодирования, который выглядит следующим образом:
bitmap[i][j + k] = bitmap[i][j + k] & ~(1 << bit_lay) | (((rand_sym >> k) & 1) << bit_lay);
Это означает:
- Перебираются битовые слои
.bit_lay - Внутри каждого слоя перебираются байты
(гдеbitmap[i][j + k]
от 0 до 7).k - k-й бит исходного символа
записывается в позициюrand_sym
байтаbit_lay
.bitmap[i][j + k]
Operational Rules
- Напиши обратный алгоритм для извлечения символов.
- Используй ту же структуру вложенных циклов:
(от 0 доbit_lay
),count_bits
(строки bitmap),i
(столбцы с шагом 8),j
(биты символа от 0 до 7).k - Логика извлечения:
- Считай бит из позиции
текущего байта:bit_lay
.((bitmap[i][j + k] >> bit_lay) & 1) - Помести этот бит в позицию
восстанавливаемого символа:k
.extracted_sym |= (extracted_bit << k)
- Считай бит из позиции
- Собери символ
и добавь его в строку результата.extracted_sym - Предоставь код вывода полученной строки (как символы или их ASCII коды, если требуется отладка).
Anti-Patterns
- Не используй сдвиг
внутри циклаextracted_sym << 1
, если логика кодирования подразумевала прямое отображение битаk
в позициюk
(как в коде пользователяk
). Используй<< k
для точного соответствия логике кодирования.<< k - Не меняй порядок переменных циклов, если это не требуется для исправления ошибки, но сохраняй логику обхода битовых плоскостей.
Triggers
- сделай обратное декодирование
- получи символ обратно
- напиши код, который получает эти символы
- обратное действие для bitmap
- извлечь данные из битовых плоскостей