![]() |
Модераторы: Daevaorn |
![]() ![]() ![]() |
|
Serenum |
|
|||
Unregistered |
Дело в следующем, данные из последовательного порта записываются в память наоборот слева направо. Нужно написать программу, или может функция есть специальная, чтобы перевести число в нормальный вид. Помогите, я на С только начинаю...
![]() |
|||
|
||||
chipset |
|
|||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 4071 Регистрация: 11.1.2003 Где: Seattle, US Репутация: 27 Всего: 164 |
Делай маски в шестнацетиричном формате затем побитовой функцией & разделяй на биты и | собирай..
Может кто знает более правильный и красивый способ.. --------------------
|
|||
|
||||
maxim1000 |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 3334 Регистрация: 11.1.2003 Где: Киев Репутация: 17 Всего: 110 |
только я не проверял ![]() -------------------- qqq |
|||
|
||||
Alex101 |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 891 Регистрация: 8.4.2002 Где: Москва Репутация: нет Всего: 10 |
Проверить не на чем. Не уверен в скобках, но работать должно. Это сообщение отредактировал(а) Alex101 - 22.7.2004, 11:54 -------------------- С уважением, А. Фролов. |
|||
|
||||
Guest |
|
|||
Unregistered |
chipset
maxim1000 Ребят, можете поподробнее объяснить, что вы предлагаете. Т. е, извлечено число из порта, присвоено переменной , и дальше словами алгоритм, мне так понятнее будет. И по русски плиз, я в программерскую феню еще не до конца въезжаю. |
|||
|
||||
Serenum |
|
|||
Unregistered |
Alex101
А почему в цикле четыре прохода? |
|||
|
||||
Alex101 |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 891 Регистрация: 8.4.2002 Где: Москва Репутация: нет Всего: 10 |
Больше не надо. Если надо перевернуть 8-и битное число, то идем до середины и меняем симметричные биты. P.S. Проверьте, работает? (Просто самому интересно, сейчас C нет, а в нашем языке нет операций сдвига). -------------------- С уважением, А. Фролов. |
|||
|
||||
<Spawn> |
|
|||
![]() Око кары:) ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 2776 Регистрация: 29.1.2003 Где: Екатеринбург Репутация: нет Всего: 64 |
можешь функцию из Winsock исользовать, а именно ntohl, если я не правильно помню(если не то, то сморти htonl)
Это сообщение отредактировал(а) <Spawn> - 22.7.2004, 12:14 -------------------- "Для некоторых людей программирование является такой же внутренней потребностью, подобно тому, как коровы дают молоко, или писатели стремятся писать" - Николай Безруков. |
|||
|
||||
maxim1000 |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 3334 Регистрация: 11.1.2003 Где: Киев Репутация: 17 Всего: 110 |
аналогия: есть стопка книг алгоритм такой: 1. взять верхнюю книгу и положить справа (там где должна быть перевернутая стопка) 2. повторить (1) столько раз, сколько книг в стопке получится перевернутая стопка книг... -------------------- qqq |
|||
|
||||
chipset |
|
||||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 4071 Регистрация: 11.1.2003 Где: Seattle, US Репутация: 27 Всего: 164 |
Выводит ноль ![]() Это сообщение отредактировал(а) chipset - 22.7.2004, 12:40 --------------------
|
||||
|
|||||
Guest |
|
|||
Unregistered |
<Spawn>
Мне под DOS надо... maxim1000
Это все понятно, но поближе к Си, пжста? |
|||
|
||||
oleg1973 |
|
|||
![]() asm fanat ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 3283 Регистрация: 16.7.2003 Где: Italy Репутация: 1 Всего: 34 |
кароче я так понимаю проблему
имеем байт 11110000 нада из него сделать 00001111 делаем _asm { mov al,наш байт rol al,4 } получим че хотели Это сообщение отредактировал(а) oleg1973 - 22.7.2004, 12:57 -------------------- SST 465555 icq 200-512-712 |
|||
|
||||
Hroft |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 310 Регистрация: 20.10.2003 Где: Москва Репутация: нет Всего: 3 |
Криво, быть может, но вроде работает. Прямой подход, без премудростей. |
|||
|
||||
Alex101 |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 891 Регистрация: 8.4.2002 Где: Москва Репутация: нет Всего: 10 |
Это будет работать только для твоего примера. Команда ROL осуществляет сдвиг влево + переносит старший бит в младший. А тут надо зеркально отобразить, например: 10110011->11001101 -------------------- С уважением, А. Фролов. |
|||
|
||||
maxim1000 |
|
||||||||||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 3334 Регистрация: 11.1.2003 Где: Киев Репутация: 17 Всего: 110 |
если человек сказал, что он на С только начинает, это еще не значит, что до этого он программировал на ассемблере ![]()
фрагмент
просто проверяет младший бит x, и если он 1, то добавляет его к result
сдвигает result влево на один бит (освобождает место для следующего)
сдвигает x вправо на один бит (делает младшим следующий) вообще полезно было бы запустить все это в отладочнике и пройтись пошаговым выполнением... -------------------- qqq |
||||||||||
|
|||||||||||
![]() ![]() ![]() |
Правила форума "С++:Общие вопросы" | |
|
Добро пожаловать!
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |