преобразование типов
- Войдите на сайт для отправки комментариев
Пт, 20/02/2015 - 14:45
помогите пожалуйста! все роди проще простого, но... если массив askii сделать большим и в цикле сравнивать if (chislo==askii[i])... то этот иф не сработает, так как число сравнивается с аски кодом
void setup(){
Serial.begin(9600);}
void loop(){
int chislo=1;
char askii[1]={'1'};
если дописать так:
Serial.print("chislo=");
Serial.println(chislo,BIN);
Serial.print("askii=");
Serial.println(askii[0],BIN);}
будет вывод:
chislo=1
askii=110001
chislo=1
askii=110001
-----
как в даном примере преобразовать либо чило в аски код либо данные массива в число, чтобы вывод в двоичном коде у них был одинаков?
Для начала правильно оформите вставку кода http://arduino.ru/forum/obshchii/vstavka-programmnogo-koda-v-temukomment...
тут то и кода как такового нет....
Если речь только о цифрах то Serial.println(askii[0]-48, BIN);
нет, не только, на самом деле в этот массив попадают данные из sd карты из конф файла, дальше он разбирается на части и после определенного знака в массиве нужно сравнить содержимое нужной ячейки массива с переменной в которой находится цыфра и если они равны нужно исполнить некоторые действия, как это правильно сделать ума не приложу...
Напишите, например, int chislo='1'; или char askii[1]={1}; - думаю, всё сравнится.
1 и '1' - это же разные числа, print не врёт.
Для преобразования, строго говоря, положено пользоваться специальными функциями, но в большинстве случаев достаточно такого простого фокуса.
Такое chislo можно смело сравнивать с единицей, т.к. в нём действительно находится само число, а не его ASCII-код.
а если в массиве будут буквы и другие символы а нужно будет найти вхождение цыфры тогда как?
Искомая цифра + 48 и сравниваем...
Зачем парить себе мозг? Храните в переменной не число, а код числа, т.е. в том же самом виде, что и в массиве, т.е. не 1, а '1' и справнивайте хоть до посинения без всяких преобразований. Места в памяти займет ровно столько же.
наверное прийдется так, потому что предыдущий прием работал только от 0 до 9 если уже число 10 - увы...
Хорошо есть функция int ifunc(int x, int y) x=21 ... как в переменную х занести аскикод числа 21?
У числа 21 нет аскикода. Аскикод есть у символа 2 и символа 1, соответственно 50 и 49. И еще цифры и числа это разные вещи, вы где-то цифры пишите где-то числа
меня интересует именно вхождение чисел в массив, как это правильно организовать?
На корпоративе вроде много не пил, а бошка вообще не работает. Нарисуйте пример входного массива в котором будите искать числа среди символов и при этом массив char... Что-то я вообще туплю. Там же всё будет числами.. '1'=49=0х31=b110001 какая разница как его записать, это всё одно и тоже.
получается есть массив: 1p|1k12345|2p|1k9876|2k45678|21p|1k123|48p|1k567 и т.д. есть функция с двумя параметрами (два числа) например giveMeKey(21,1) нужно чтобы функция взяла число 21 и начала искать его по массиву если встречает число 21 проверяет есть ли после него символ "р" если есть то начинает дальше искать второй параметр функции "1" если находит и после него сразу идет символ "к" то последующие данные от "к" до "|" должна вернуть функция тоесть в данном примере функция вернет "123"
или хотябы как содержимое переменной преобразовать в askii код?
Если есть желание можно вот так поизвращаться :)
))) как раз так сейчас и извращаюсь через itoa ))
спасибо!
Написал функцию getRCcode так, громоздкая может кривая но работает, но переслала работать остальная часть программы вернее участок:
тоесть webFile==0, при этом свою функцию в коде даже не вызываю, и если стереть функцию все работает как надо, подскажите плиз на что оно ругается?
- вот здесь ошибка, если в nashelpult занести "0" вся программа работает нормально, только заношу 1 - все через веб сервер файлы не открываются, почему так? что ему не нравится?
Добрый день, вы бы не могли краем глаза глянуть на мой код в этой ветке, может подскажете в чем причина?
убрал последние два Serial.println и заработало! почему так я так и не понял...