| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > C/C++: Общие вопросы > Глюк побитной записи? |
| Автор: kefir01 5.12.2013, 01:14 | ||||||
| Добрый день, друзья. Никак не могу въехать в каком месте я дурак - глядите... Сразу прошу ссаными тряпками в поиск не гнать - похожего не нарыл (честно старался найти похожее) Есть такой код:
Если я записываю переменную test в виде
то получаю вывод 10110000, что собственно и хочу, однако если записываю в виде (char)10110000 получаю 00110000, что как вы можете понять вообще не айс. Запись в виде
то вообще схватываю четыре нуля. Причем неважно - с (char) или нет. |
| Автор: volatile 5.12.2013, 01:56 |
0x - это не двоичная запись, а шестнадцатеричная |
| Автор: feodorv 5.12.2013, 02:46 | ||
10110000 - обычное десятеричное число, никак не двоичное. Когда вы делаете (char)10110000, то от этого числа остаются только младшие 8 бит:
Увы, в C/C++ нет двоичного представления констант, но можно пользоваться шестнадцатеричным, как Вы и написали: |
| Автор: kefir01 5.12.2013, 07:28 | ||
| Все немного не так... На самом деле мне надо записать 20 байт по 8 бит каждый. Не совсем числа - скорее ключи управления... Принимающая сторона тоже читает больше индивидуальные биты нежели десятеричные числа, которые они образуют. Совсем забыл упомянуть, что если
То принимающая сторона принимает запрос и в ответе возвращает 10110000, а если я записываю как-либо иначе - нет. Поэтому терять тут ничего нельзя. А за информацию спасибо, но проблемы это не решает. |
| Автор: borisbn 5.12.2013, 09:02 |
Какой проблемы-то ? |
| Автор: volatile 5.12.2013, 09:55 | ||||
kefir01, можно так инициализировать:
вместо тектовой константы, можно и std::string
Главное следите, чтобы строка состояла только из нолей и единичек, иначе программа выкинет исключение std::invalid_argument |
| Автор: feodorv 5.12.2013, 10:54 |
Так что теряется-то? |
| Автор: kefir01 5.12.2013, 19:14 |
| volatile, спасибо, в карму плюсанул. Так пишется правильно... Хоть конечно и не хочется пользоваться std для такиех вещей... Я так еще подумал, что в принципе можно было бы в шестнадцатеричном представлении писать - то есть если у меня скажем есть последовательность типа 01011010, то никто не мешает записать это как 0x59, хотя в таком случае пришлось бы преобразования делать... |