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.md
source 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);

Это означает:

  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
  • извлечь данные из битовых плоскостей