14.04.2013, 21:52
|
|
Прописка
Регистрация: 31.03.2013
Сообщений: 146
Сказал спасибо: 50
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
|
Преобразование строки в число
Даже не знаю правильно я сформулировал название темы или это должно называться по другому. Задача такая,в мк по UART поступили данные в таком формате 02,32,00 , и так далее, мне эти три байта нужно преобразовать в переменную со значением 23200. Какой способ сделать это максимально быстро? Мне для этого нужна функция atol() ?
|
|
|
|
14.04.2013, 22:08
|
|
Гуру портала
Регистрация: 06.05.2005
Адрес: Краснодар, возле укротворного моря.
Сообщений: 18,841
Сказал спасибо: 2,531
Сказали Спасибо 11,764 раз(а) в 5,895 сообщении(ях)
|
Re: Преобразование строки в число
Сообщение от stmfaq
|
Даже не знаю правильно я сформулировал название темы или это должно называться по другому. Задача такая,в мк по UART поступили данные в таком формате 02,32,00 , и так далее, мне эти три байта нужно преобразовать в переменную со значением 23200. Какой способ сделать это максимально быстро? Мне для этого нужна функция atol() ?
|
Неправильно (читать понятие "строка"). Это просто последовательность. Судя по написанному, налицо "позиционность" байтов. В этом случае первый байт умножить на 10000, к нему прибавить второй, умноженный на 100 и к сумме прибавить третий.
atol() это "ASCII-›Integer". В данном случае ASCII не пахнет, посему - неприменима.
__________________
Не бейте больно, ежели чо, ну не удержался... А вааще,
"Мы за все хорошее, против всей х..., По лугам некошеным чтобы шли ступни,
Чтобы миром правила правда, а не ложь, Мы за все хорошее, нас не на...!
..." (Ленинград)
Я не несу ответственности за свои действия в Вашей голове.
|
|
|
|
14.04.2013, 22:09
|
|
Почётный гражданин KAZUS.RU
Регистрация: 28.05.2010
Сообщений: 1,118
Сказал спасибо: 150
Сказали Спасибо 604 раз(а) в 310 сообщении(ях)
|
Re: Преобразование строки в число
|
|
|
|
14.04.2013, 22:16
|
|
Гуру портала
Регистрация: 06.05.2005
Адрес: Краснодар, возле укротворного моря.
Сообщений: 18,841
Сказал спасибо: 2,531
Сказали Спасибо 11,764 раз(а) в 5,895 сообщении(ях)
|
Re: Преобразование строки в число
Хотел сказать, что сдвиг в этом случае ошибочен, да притормозил - может запись постановки задачи ошибочна? Товарищ-то не вполне владеет понятиями... В общем, выбор правильного алгоритма - за ним.
__________________
Не бейте больно, ежели чо, ну не удержался... А вааще,
"Мы за все хорошее, против всей х..., По лугам некошеным чтобы шли ступни,
Чтобы миром правила правда, а не ложь, Мы за все хорошее, нас не на...!
..." (Ленинград)
Я не несу ответственности за свои действия в Вашей голове.
|
|
|
|
14.04.2013, 22:21
|
|
Прописка
Регистрация: 31.03.2013
Сообщений: 146
Сказал спасибо: 50
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
|
Re: Преобразование строки в число
Сообщение от akegor
|
Неправильно (читать понятие "строка"). Это просто последовательность. Судя по написанному, налицо "позиционность" байтов. В этом случае первый байт умножить на 10000, к нему прибавить второй, умноженный на 100 и к сумме прибавить третий.
atol() это "ASCII-›Integer". В данном случае ASCII не пахнет, посему - неприменима.
|
Ох и мудрено выходит, а по другому никак? а то это нужно делать на лету в потоке данных. Дело в том что эти данные уже подверглись одному преобразованию , они как раз и шли в ANSII кодировке ,было 30, 34, 33, 38, 30, 30, стало 04,38,00. Получается что мне нужно было перед первой трансформации применять atol() ?
Последний раз редактировалось stmfaq; 14.04.2013 в 22:23.
|
|
|
|
14.04.2013, 22:22
|
|
Почётный гражданин KAZUS.RU
Регистрация: 01.05.2009
Адрес: Коптево
Сообщений: 2,849
Сказал спасибо: 276
Сказали Спасибо 427 раз(а) в 274 сообщении(ях)
|
Re: Преобразование строки в число
Может, проще выйдет самому функцию написать?
|
|
|
|
14.04.2013, 22:24
|
|
Почётный гражданин KAZUS.RU
Регистрация: 28.05.2010
Сообщений: 1,118
Сказал спасибо: 150
Сказали Спасибо 604 раз(а) в 310 сообщении(ях)
|
Re: Преобразование строки в число
...если данные поступили в виде '02,32,00', тогда удалить запятые, если действительно байтами или массивом байт, тогда сдвигом в старшие разряды.
Цитата:
|
Дело в том что эти данные уже подверглись одному преобразованию , они как раз и шли в ANSII кодировке ,было 30, 34, 33, 38, 30, 30, стало 04,38,00.
|
нам неведомо, приведите то, что на самом деле происходит.
Последний раз редактировалось raxp; 14.04.2013 в 22:26.
|
|
|
|
14.04.2013, 22:30
|
|
Прописка
Регистрация: 31.03.2013
Сообщений: 146
Сказал спасибо: 50
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
|
Re: Преобразование строки в число
Сообщение от raxp
|
если действительно байтами или массивом байт, тогда сдвигом в старшие разряды.
|
Запятые поставил для ясности, на самом дели это массив данных полученных c UART.
Сообщение от raxp
|
нам неведомо, приведите то, что на самом деле происходит.
|
Получил по uart такой пакет 30 30 30 34 33 38 30 30 30 35 30 30 38 30 37 из него получилось 000438000500807
|
|
|
|
14.04.2013, 22:37
|
|
Гуру портала
Регистрация: 06.05.2005
Адрес: Краснодар, возле укротворного моря.
Сообщений: 18,841
Сказал спасибо: 2,531
Сказали Спасибо 11,764 раз(а) в 5,895 сообщении(ях)
|
Re: Преобразование строки в число
Сообщение от stmfaq
|
Запятые поставил для ясности, на самом дели это массив данных полученных c UART.
Получил по uart такой пакет 30 30 30 34 33 38 30 30 30 35 30 30 38 30 37 из него получилось 000438000500807
|
А ссуть-то где? Какой вопрос - такие и ответы. Большая часть ответа - в корректной постановке задачи, а мы гадаем на кофейной гуще:"Так что же хотел сказать ТС, что он подразумевал и что, черт его дери, требуется на самом деле?"
__________________
Не бейте больно, ежели чо, ну не удержался... А вааще,
"Мы за все хорошее, против всей х..., По лугам некошеным чтобы шли ступни,
Чтобы миром правила правда, а не ложь, Мы за все хорошее, нас не на...!
..." (Ленинград)
Я не несу ответственности за свои действия в Вашей голове.
|
|
|
|
14.04.2013, 22:39
|
|
Гражданин KAZUS.RU
Регистрация: 16.03.2009
Адрес: Украина, Харьков
Сообщений: 762
Сказал спасибо: 108
Сказали Спасибо 67 раз(а) в 67 сообщении(ях)
|
Re: Преобразование строки в число
stmfaq, так, получается у вас строка текста приходит в МК. Как эта строка выглядит по нормальному в тексте? просто числа и все? Если да, то записать принятые байты в строку, а после принятия последнего байта(символа), сделать перевод из строки в число.
Есть ли в принимаемой строке символы начала, конца передачи? или просто через определенный промежуток времени к Вам приходят данные ?
Последний раз редактировалось swat24; 14.04.2013 в 22:46.
|
|
|
|
Ваши права в разделе
|
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 16:38.
|
|