На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
Модераторы: Qraizer, Hsilgos
  
> <bitset> <- char*
    Товарищи! не подскажете, каким образом я могу запихнуть сроку символов в <bitset>?

    очень грубо говоря, что-то типа std::bitset<16> str ("AA\0");
      Из шестнадцатеричного представления - только предварительно преобразовав эту строку в int. А вот из двоичного ("101011101") - легко. Есть соответствующий конструктор.
        Как-то хреново получается, не могу ж я всю строку в инт преобразовать.
        Может подскажете, мне строку надо передвинуть влево на один бит, чем воспользоваться?
          ExpandedWrap disabled
             
            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;
            }
            ну только что идиотом не назвали :)

            Этот метод очень сильный, но если предположить, что мне может понадобиться сдвинуть на N бит?

            Собственно я чего сюда полез, не могу поверить, что до сих пор это нигде стандартно не забиблиотечено.
            А этот <bitset> не подходит... обидно...
              Тогда расскажи толком - тебе нужно произвольную строку символов сдвигать, или в этой строке содержится что-либо определенное (например, как у тебя, шестнадцатеричное число)?
                Обычно bitset применяют для удобной работы с битами-флагами (byte/short/long). У него и операторы для таких целей специализированные есть.
                А вот для использования в качестве выяснения битов в строке.....он не совсем подходит.
                  Задача сложнее.
                  В char * хранится tiff, монохромный, бит - на пиксель, так вот мне надо двигать эту картинку, на разное к-во пикселей, что есть бит.
                    Терерь ясно. Ну тогда тебя спасет только вариации приведенного выше алгоритма.
                      Цитата Stl @ 12.01.04, 13:03
                      мне надо двигать эту картинку, на разное к-во пикселей, что есть бит.

                      не совсем понятно. ведь, когда ты двигаешь биты, то ты тем самым можешь изменить размер картингки. и вообче, не совсем понятно, что значит "двигать картинку на разное количество пикселей". менять ее размеры, или просто двигать по экрану? или может быть обрезать ее?
                      по моему, в любом таком случае ты не обойдешься просто двиганием пикселей. еще надо восстанавливать размеры, а также двигать указатель, который указывает на байт-массив.
                      есть предложение, не двигать массив оператором << или >>, а просто хранить указатель на нужный байт в массиве и еще один счетчик на позицию бита в байте.
                      1 пользователей читают эту тему (1 гостей и 0 скрытых пользователей)
                      0 пользователей:


                      Рейтинг@Mail.ru
                      [ Script execution time: 0,0283 ]   [ 15 queries used ]   [ Generated: 17.05.24, 04:51 GMT ]