Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
||
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[18.191.189.120] |
|
Сообщ.
#1
,
|
|
|
Товарищи! не подскажете, каким образом я могу запихнуть сроку символов в <bitset>?
очень грубо говоря, что-то типа std::bitset<16> str ("AA\0"); |
Сообщ.
#2
,
|
|
|
Из шестнадцатеричного представления - только предварительно преобразовав эту строку в int. А вот из двоичного ("101011101") - легко. Есть соответствующий конструктор.
|
Сообщ.
#3
,
|
|
|
Как-то хреново получается, не могу ж я всю строку в инт преобразовать.
Может подскажете, мне строку надо передвинуть влево на один бит, чем воспользоваться? |
Сообщ.
#4
,
|
|
|
char* str = "Some string"; int carry = 0; while (*str) { int old_carry = carry; carry = (*str & 0x80) ? 1 : 0; *str <<= 1; *str = (*str & 0xfe) | old_carry; } |
Сообщ.
#5
,
|
|
|
ну только что идиотом не назвали
Этот метод очень сильный, но если предположить, что мне может понадобиться сдвинуть на N бит? Собственно я чего сюда полез, не могу поверить, что до сих пор это нигде стандартно не забиблиотечено. А этот <bitset> не подходит... обидно... |
Сообщ.
#6
,
|
|
|
Тогда расскажи толком - тебе нужно произвольную строку символов сдвигать, или в этой строке содержится что-либо определенное (например, как у тебя, шестнадцатеричное число)?
|
Сообщ.
#7
,
|
|
|
Обычно bitset применяют для удобной работы с битами-флагами (byte/short/long). У него и операторы для таких целей специализированные есть.
А вот для использования в качестве выяснения битов в строке.....он не совсем подходит. |
Сообщ.
#8
,
|
|
|
Задача сложнее.
В char * хранится tiff, монохромный, бит - на пиксель, так вот мне надо двигать эту картинку, на разное к-во пикселей, что есть бит. |
Сообщ.
#9
,
|
|
|
Терерь ясно. Ну тогда тебя спасет только вариации приведенного выше алгоритма.
|
Сообщ.
#10
,
|
|
|
Цитата Stl @ 12.01.04, 13:03 мне надо двигать эту картинку, на разное к-во пикселей, что есть бит. не совсем понятно. ведь, когда ты двигаешь биты, то ты тем самым можешь изменить размер картингки. и вообче, не совсем понятно, что значит "двигать картинку на разное количество пикселей". менять ее размеры, или просто двигать по экрану? или может быть обрезать ее? по моему, в любом таком случае ты не обойдешься просто двиганием пикселей. еще надо восстанавливать размеры, а также двигать указатель, который указывает на байт-массив. есть предложение, не двигать массив оператором << или >>, а просто хранить указатель на нужный байт в массиве и еще один счетчик на позицию бита в байте. |