|
7 / 7 / 2
Регистрация: 23.08.2011
Сообщений: 64
|
|
Пиксель16.10.2011, 14:20. Показов 2052. Ответов 9
Метки нет (Все метки)
Работаю с картинкой формата .bmp, глубина цвета 24.
Как разбить на пиксели и прочитать цвет каждого пикселя уже знаю. Но тут у меня появилось несколько вопросов: 1) как представить цвет(значение записано в int) в bits. Типа 255 это 11111111 2) как обратится в этом bits к определенному розряду и допустим заменить его. 3) как вернуться из bits в int 4) как представить string в 0 и 1 (сделать масив). Вопросов много, если кто не ленится то напишите. Ссылки на готовые програмы по сеганографии не давайте. Я новичек, хочу своими руками.
0
|
|
| 16.10.2011, 14:20 | |
|
Ответы с готовыми решениями:
9
Не добавляет пиксель на картинку
|
|
17823 / 12973 / 3382
Регистрация: 17.09.2011
Сообщений: 21,261
|
||||||||||||||||||||||||
| 16.10.2011, 14:39 | ||||||||||||||||||||||||
Например:
0
|
||||||||||||||||||||||||
|
0 / 0 / 0
Регистрация: 16.10.2011
Сообщений: 33
|
|
| 16.10.2011, 14:41 | |
|
По четвёртому пункту. у строковой переменной есть метод ToArray(), кажется. Так можно перевести строку в массив символов и далее с ними оперировать.
0
|
|
|
7 / 7 / 2
Регистрация: 23.08.2011
Сообщений: 64
|
|
| 16.10.2011, 15:15 [ТС] | |
|
в четвертом пункте надо сделать из строки масив ноликов и единичек.
В первом пункте: мне нужно не переменную стринг а именно bits Если что то глупое спрашиваю - извените.
0
|
|
|
17823 / 12973 / 3382
Регистрация: 17.09.2011
Сообщений: 21,261
|
|||
| 16.10.2011, 15:19 | |||
|
0
|
|||
|
7 / 7 / 2
Регистрация: 23.08.2011
Сообщений: 64
|
|
| 18.10.2011, 22:28 [ТС] | |
|
а как узнать значение самого младшего бита в int, и если он, например 1 то заменить на 0
0
|
|
|
17823 / 12973 / 3382
Регистрация: 17.09.2011
Сообщений: 21,261
|
|||||||
| 18.10.2011, 22:42 | |||||||
0
|
|||||||
|
7 / 7 / 2
Регистрация: 23.08.2011
Сообщений: 64
|
|
| 18.10.2011, 23:21 [ТС] | |
|
если можно то в кратце на примере числа int = 3
0
|
|
|
17823 / 12973 / 3382
Регистрация: 17.09.2011
Сообщений: 21,261
|
|||||||||||||||||||||
| 18.10.2011, 23:47 | |||||||||||||||||||||
|
Stipashka
У нас имеются операторы двоичной логики: | - ИЛИ (выражение истинно, если хотя бы одно из значений истино) & - И (выражение истинно, если оба значения истинны) ^ - Исключающее ИЛИ (выражение истинно, если одно значение истинно, но не оба) ~ - НЕ (значение меняется на противоположное) Есть еще операторы << и >> - сдвигают все биты числа влево и вправо соответственно. Тут как в обычной булевой логике, только с битами: Таблица значений для оператора ИЛИ: x y x|y 0 0 0 0 1 1 1 0 1 1 1 1 Для И: x y x&y 0 0 0 0 1 0 1 0 0 1 1 1 Для исключающего ИЛИ: x y x^y 0 0 0 0 1 1 1 0 1 1 1 0 Для НЕ: x ~x 0 1 1 0 Итак, число 3. В двоичной системе счисления оно имеет вид 0011 Если в коде оно будет представлено в виде целого числа (int), то всего в нем будет 32 бита: 0000 0000 0000 0000 0000 0000 0000 0011 Используя побитовые операторы, мы можем манипулировать отдельными битами числа. Например, нам надо сделать третий (я веду счет с младшего бита) бит единицей. Для этого можно приспособить оператор ИЛИ (значение равно единице, если хотя бы один из аргументов равен единице): 0011 (3 в десятичной) ИЛИ 0100 (4 в десятичной) = 0111 То есть все биты двух чисел сравниваются друг с другом через оператор и получившееся значение записывается в результат: 0 или 0 = 0 0 или 1 = 1 1 или 0 = 1 1 или 0 = 1 То есть чтобы поставить числу третий бит в единицу, делаем следующее:
Теперь, допустим, нам надо поставить первый и второй биты на нуль. То есть из вида 0111 сделать 0100. Говоря иначе, нам надо оставить все биты как есть, кроме первых двух. Для этого надо: 1. Взять число, состоящее из первых двух бит: 0000 0000 0000 0000 0000 0000 0000 0011 (3) 2. Поменять все биты на противоположные через оператор ~: 1111 1111 1111 1111 1111 1111 1111 1100 3. Сложить получившееся число с нашим (0111) через оператор &: 0000 0000 0000 0000 0000 0000 0000 0111 И 1111 1111 1111 1111 1111 1111 1111 1100 Тут происходит то же самое, что и в предыдущем примере, только с оператором И. Результат операции И равен истине только тогда, когда оба аргумента истинны. То есть для старших 28-и разрядов результат будет всегда 0, т.к. там 0 и 1. Для младших четырех получается так: 0 и 1 = 0 1 и 1 = 1 1 и 0 = 0 1 и 0 = 0 Результат: 0100, первые два бита равны нулю, что и требовалось. В коде это выглядит так:
для того, чтобы сделать определенные биты единицей, используем оператор | с числом, у которого все нужные биты равны единице. Для того, чтобы сделать определенные биты нулями, используем оператор & с числом, у которого все биты равны единице, кроме нужных. Ссылка на всякий случай: Двоичная логика
2
|
|||||||||||||||||||||
|
7 / 7 / 2
Регистрация: 23.08.2011
Сообщений: 64
|
|
| 19.10.2011, 00:19 [ТС] | |
|
kolorotur ОГРОМНОЕ спасибо. Уже, наверное, понял все.
0
|
|
| 19.10.2011, 00:19 | |
|
Помогаю со студенческими работами здесь
10
Как массив байтов (1 байт на пиксель (изображение в оттенках серого) запихнуть в Bitmap и отобразить в PicterBox?
Лишний пиксель после поворота изображения Как создать форму 1x1 пиксель? Если в определенной точке пиксель такого-то цвета то Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
http://iceja.net/ математические сервисы
iceja 20.01.2026
Обновила свой сайт http:/ / iceja. net/ , приделала Fast Fourier Transform экстраполяцию сигналов. Однако предсказывает далеко не каждый сигнал (см ограничения http:/ / iceja. net/ fourier/ docs ). Также. . .
|
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма).
На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
|
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ *
Дана цепь постоянного тока с R, L, C, k(ключ), U, E, J. Программа составляет систему уравнений по 1 и 2 законам
Кирхгофа, решает её и находит переходные токи и напряжения на элементах схемы. . . .
|
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым.
Но восстановить их можно так.
Для этого понадобится консольная утилита. . .
|
|
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
|
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11
— это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
|
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11
Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
|
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
|