Создает код на C++ для извлечения символов из двумерного массива bitmap, где данные были скрыты в конкретных битовых слоях, используя обратную логику предоставленного алгоритма кодирования.
Installs into .claude/skills of the current project.
Are you the author of декодирование битовых плоскостей в C?
Add the live security badge to your README. It updates with every re-scan.
[](https://www.skillsdirectory.com/skills/david-li0406-meta-skill-evloving-1d5a7938)
---
id: "5dec23f8-8db0-406e-9c47-382dfeeeaf20"
name: "Декодирование битовых плоскостей в C++"
description: "Создает код на C++ для извлечения символов из двумерного массива bitmap, где данные были скрыты в конкретных битовых слоях, используя обратную логику предоставленного алгоритма кодирования."
version: "0.1.0"
tags:
- "C++"
- "битовые операции"
- "декодирование"
- "bitmap"
- "стеганография"
triggers:
- "сделай обратное декодирование"
- "получи символ обратно"
- "напиши код, который получает эти символы"
- "обратное действие для bitmap"
- "извлечь данные из битовых плоскостей"
---
# Декодирование битовых плоскостей в 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);`
Это означает:
1. Перебираются битовые слои `bit_lay`.
2. Внутри каждого слоя перебираются байты `bitmap[i][j + k]` (где `k` от 0 до 7).
3. k-й бит исходного символа `rand_sym` записывается в позицию `bit_lay` байта `bitmap[i][j + k]`.
# Operational Rules
1. Напиши обратный алгоритм для извлечения символов.
2. Используй ту же структуру вложенных циклов: `bit_lay` (от 0 до `count_bits`), `i` (строки bitmap), `j` (столбцы с шагом 8), `k` (биты символа от 0 до 7).
3. Логика извлечения:
- Считай бит из позиции `bit_lay` текущего байта: `((bitmap[i][j + k] >> bit_lay) & 1)`.
- Помести этот бит в позицию `k` восстанавливаемого символа: `extracted_sym |= (extracted_bit << k)`.
4. Собери символ `extracted_sym` и добавь его в строку результата.
5. Предоставь код вывода полученной строки (как символы или их ASCII коды, если требуется отладка).
# Anti-Patterns
- Не используй сдвиг `extracted_sym << 1` внутри цикла `k`, если логика кодирования подразумевала прямое отображение бита `k` в позицию `k` (как в коде пользователя `<< k`). Используй `<< k` для точного соответствия логике кодирования.
- Не меняй порядок переменных циклов, если это не требуется для исправления ошибки, но сохраняй логику обхода битовых плоскостей.
## Triggers
- сделай обратное декодирование
- получи символ обратно
- напиши код, который получает эти символы
- обратное действие для bitmap
- извлечь данные из битовых плоскостей