1+2 дают 540... не пойму почему
- Войдите на сайт для отправки комментариев
Пт, 16/02/2018 - 16:17
переводу массив char в числа, разбирая на части
tmpchar[2]={1,2}
Serial.println(tmpchar[0]);Serial.println(tmpchar[1]);
//в мониторе 1 и 2
нокогда вот так собираю
int hour=tmpchar[0]*10+tmpchar[1];
Serial.print(hour);
дает 540
почему он не хочет адекватно переводить символ в число
делаю принудительно
hour=int(tmpchar[0])*10+int(tmpchar[1]);
результат 540
делаю фенкцией стандартной hour=atoi(tmpchar);
и тоже 540....
ну как так то?! :(
я понимаю, что он берет ASCII номер символа, но почему он даже принудитель не хочет конвертировать символ в число?!
49 * 10 + 50 = 540 А как Вы предлагаете конвертировать символ в целое, кроме как взять код этого символа?
Вычтите по 48 да и всё.
А что надо-то в итоге?
char массив с датой и временем разложить на час/минуда и тд...
спасибо, наверное таки буду, только у меня чтото то само переводит то не переводит... глючит этот чар по полной
судя по всему atoi криво реализован.... хотя его задача какраз и переводить символ в число при этом даже набор символов в сичло
очередной квест начался....
все там работает
Да уж, опять во всём ардуина виновата.
если голый код - то работает, у меня же в программе оно не работает
данные берутся с ЖПС и разбираются посимвольно
и вот числовые символы оно не переводит никак....
Всё оно переводит. Надо C-строку скармливать atoi(), а не черте знает что.
вам в сотый раз сказать - выкладываете то что не работает !
вот часть кода
и вот что в мониторе
ага и она теперь, не я пас...
Не виновата.
вот и я думаю - идет чар - переносится чар -до atoi приходит чар - после него вместо числа остается его номер по таблице ascii
может быть при копировании из переменной в переменную чтото не так идет?
Вы описание функции atoi() читали?
преобразование строки (символа) в число инт, смотрит посимвольно, если первый символ = числу то конвертирует в число и продолжает до конца строки или не числового символа
у меня символ один и числовой - что её не нравится?
при этом всем дальше по коду у меня atof и atol работают без нареканий вообще....
и продолжает до конца строки
у меня символ один и числовой - что её не нравится?
Что такое конец строки и есть ли он в вашей строке?
ELITE - неделя прошла и вы снова? - опять у вас циклы не работают, функции глючат? :)
Что там танцору то мешает, помните? :)
и продолжает до конца строки
у меня символ один и числовой - что её не нравится?
Что такое конец строки и есть ли он в вашей строке?
массив задан из 2 символа
элемент 1 = 1
элемент2 =2
строка из 2 чар символов, оба числовые.
Еще раз повторю вопрос: что такое "конец строки" ?
массив задан из 2 символа
элемент 1 = 1
элемент2 =2
строка из 2 чар символов, оба числовые.
ELITE - вы в принципе не понимаете, как устроена строка. Начать с того, что если у в строке 2 символа - массив нужен НА ТРИ ЭЛЕМЕНТА! - еще скажите, что вы этого нигде не читали...
конец строки или любой не числовой символ (или 2торая точка, допускается знак "-" как первый символ)является ограничителем числа
и да, я читал - откуда в массиве чар 3й символ?, это же не стрин массив...
и почему atof atol работают при этом правильно? и atoi выдает бред
На колу мочало, начинай сначала.
https://yandex.ru/search/?text=C-style%20string
то время и скорость с которой строчится куча постов можно потратить "на подумать".
и да, я читал - откуда в массиве чар 3й символ?, это же не стрин массив...
Пля... А с чем, по Вашему, работает atoi(). если не со стринг-массивом?!
то время и скорость с которой строчится куча постов можно потратить "на подумать".
Так нашему "танцору" все время кто-то гадит - то циклы for. то функция atoi...
Забавно, что между своими "запоями" он временами выглядит нормальным человеком :)
Потому что Вы не хотите адекватно это написать!
Неужели ни в одном из 20-ти языков, которые Вы знаете на уровне выше университетского, нет символьных типов? Вы, знаете, я даже грешным делом, начинаю сомневаться в этих Ваших Ваших словах. Не могли бы Вы озвучить названия этих самых 20-ти языков? Это сильно упростило бы процесс помощи Вам. Было бы понятно с чем сравнивать и какие примеры Вам писать.
почему он даже принудитель не хочет конвертировать символ в число?!
Плохо принуждали. Небось только языком, а там иголки под ногти, яйца в тиски, водой на лысину - это не. Кто ж так принуждает?
... судя по всему atoi криво реализован....
... может быть strcpy виновата ...
... может быть при копировании из переменной в переменную чтото не так идет ...
Раньше у Вас цилы не работали, теперь уже и atoi, и strcpy и оператор присваивания ... ну всё не работает.
Никогда не задумывались, может у Вас мозги криво реализованы? И потому всё идёт не так?
аналогичные операции, функции, конструкции отлично работают в php, js, jass( хотя он сильно урезаная версия java) paskal
но вот в "С" они странным образом глючат на ровном месте.
и как оказывается, "С" выпендрилась и сделала строку из 2 символов равной трем символам....
хуже С логика работы только у циски мне встречалась, и то циска денег стоит и на ней зарабатывают, вот всё в ней и не как у других...а "С" каждый день выкрутасы новые подкидывает...
Пошла жара...
Горячий-горячий, совсем белый! :))))
https://www.youtube.com/watch?v=obaBAMdvG8c
О!!!!! неужели затих? :) купировали приступ...
я вот так из смс выделяю числа
Я долго размышлял и наконец-то понял: топикстартеру попался экземпляр Arduino IDE с так называемым "нечестным Си". Если раньше о нём только ходили слухи, то теперь, как мы видим, появились и реальные пострадавшие. То есть существование этого феномена мы отрицать теперь не в праве. Неплохо было бы произвести соскоб с этого экземпляра и направить в ведущие научные организации, чтобы они наконец-то разобрались с паразитом, выяснили точное место его происхождения в подмосковье и создали вакцину.
А пока человека придется спасать дедовскими методами - постепенно переводить на ASM.
я вот так из смс выделяю числа
Валера, ну, блин, ну хоть ссылку-то поставьте! ну за что ж Вы так память-то не любите? Не нужна она Вам, что ли?
А пока человека придется спасать дедовскими методами - постепенно переводить на ASM.
а до этого изолировать в тщательно охраняемом стационаре :)
аналогичные операции, функции, конструкции отлично работают в php, js, jass( хотя он сильно урезаная версия java) paskal
Жесть1, я фигею. Значит в перечисленных языках, если сложить два символа '1' и '3' - получишь число 4? Ахренеть, а мужики-то и не знали! Вот, что значит "уровень выше университетского"!
И, кстати, что за я зык такой paskal? А то я как прочитал и понял, что не знаю такого, так аж plakal!
-------
1 Жесть - холоднокатаная отожжённая листовая сталь толщиной 0,10—0,36 мм (по ГОСТ Р 52204-2004) с нанесёнными защитными покрытиями из олова или специальными покрытиями.
Валера, ну, блин, ну хоть ссылку-то поставьте! ну за что ж Вы так память-то не любите? Не нужна она Вам, что ли?
если б только это. Там в строке 4, как мне кажется - круче. Извлекаем из строки подстроку той же длины, что и вся исходная строка...
jass - сильно урезаная версия java
За это отдельное спасибо. И, это, не поделитесь телефоном дилера? :)
Извлекаем из строки подстроку той же длины, что и вся исходная строка...
Мда, я до туда не добрался, и, как видно, напрасно :)
это было 3 года назад, когда купил первую дуню :)
постепенно переводить на ASM.
Может на paskal? Заодно узнаем, что это такое.
Жесть1, я фигею. Значит в перечисленных языках, если сложить два символа '1' и '3' - получишь число 4? Ахренеть, а мужики-то и не знали!
Евгений, а вот зря вы иронизируете.
Вот вам код на языке Perl - весьма популярный скриптовый язык в среде Unix
А вот результат запуска:
В Перле таки "1" и 1 - это одно и тоже.
хуже С логика работы только у циски мне встречалась, и то циска денег стоит и на ней зарабатывают, вот всё в ней и не как у других...а "С" каждый день выкрутасы новые подкидывает...
Насчёт цисок вы погорячились, там всё очень стройненько, озвучьте пожалуйста вы из какого государства?
jass - сильно урезаная версия java
За это отдельное спасибо. И, это, не поделитесь телефоном дилера? :)
Думаю, что это Java ASSembler. По приметам из ориентировки подходит.
В Перле таки "1" и 1 - это одно и тоже.
Не совсем так. Если применять к переменным оператор арифметического сложения (+), то perl попытается привести операнды к числовому виду. Если же применять оператор конкатенации (.), то операнды будут преобразованы в строки. Это очень удобно, когда, например, с конфига строку считал, +0 ей сделал и у тебя уже число в переменной. Но потом очень сложно с этой иглы соскакивать и приучаться самостоятельно делать приведение типов.
Жжёте, мужики! Я-то, грешным делом, уже забил этому ауту что-то писать, ибо - ну буратино оно, и в африке буратино. Но вы не сдаётесь, гляжу :) Так держать, кто последний сдулся под натиском вечного сияния чистого разума - тот лошандра :) :)
Не совсем так. Если применять к переменным оператор арифметического сложения (+), то perl попытается привести операнды к числовому виду. Если же применять оператор конкатенации (.), то операнды будут преобразованы в строки. Это очень удобно, когда, например, с конфига строку считал, +0 ей сделал и у тебя уже число в переменной. Но потом очень сложно с этой иглы соскакивать и приучаться самостоятельно делать приведение типов.
Делать "+0" необязательно, для того чтобы из строки конфига получить числов Перле вообще ничего не нужно, все числовые строки и так считаются числами и наоборот. И можно не только складывать строки "1" + "3" = 4, но конкатеировать числа: 3.4 = 34
Насчет удобно - не то слово. Любая работа с текстом и строками на Перле получается раз 5-10 короче, чем на Си. А парсеры на Перле писать - одно удовольствие :) Например, вся задача ТС по извлечению времени из строки на Перле записывается одним оператором.
А переход с Перла на Си - это "ломка". Пока не привыкнешь - трудно отделаться от мысли, что Си написан в третьем рейхе, чтоб над заключенными измываться :) Но потом привыкаешь...
В Перле таки "1" и 1 - это одно и тоже.
Мне казалось, там список языков приведён. Неужто во всех так? Так что не зря иронизирую.
Мне казалось, там список языков приведён. Неужто во всех так? Так что не зря иронизирую.
ИМХО, коренное отличие Си от всех перечисленных языков в том, что только в Си нет базового типа для строк. И в этом смысле сравнение Си и Перла вполне в тему и отражает антагонизм между ними :)