Есть переменная unsigned long i=1111111844743; // (13 цифр) нужно получить массив символов char char_array[]=i;// так, разумеется не прокатывает. А как сделать? 1. Вначале сделал String str = String(i); Получил строку 1111111844743 2. Теперь надо преобразовать в CHAR? другого способа не нашел. попробовал на основе примера Код (C++): // Define String str = "This is my string"; // Length (with one extra character for the null terminator) int str_len = str.length() + 1; // Prepare the character array (the buffer) char char_array[str_len]; // Copy it over str.toCharArray(char_array, str_len); сделал: Код (C++): char char_array[14];//и так знаю сколько символов и прибавил 1 str.toCharArray(char_array, 14); Serial.print ("=!=!====: "); Serial.print (str[4]); Serial.println (str[5]); Serial.println (str); delay(1000); Выводит на экран: =!=!====: 28 3010282375 28 - это 4 и 5 символ в массиве (порядок от нуля) почему число то другое, там же были символы 1111111844743 а не 3010282375 Попробовал выводить и так, Код (C++): Serial.print ("=!=!====-: "); Serial.print (char_array[4]); Serial.println (char_array[5]); Serial.println (char_array); но выдает те же числа: 28 и 3010282375 Подскажите, пожалуйста, как сконвертировать строку в CHAR. А может даже сразу число unsigned long в массив CHAR
Спасибо за ответ, но что строка и есть массив чаров - понятно, непонятно как из строки сделать чар! и откуда вылезает 3010282375 вместо 1111111844743
Спасибо за подсказку, добрый человек! ) Чего-то казалось, что 13 цифр помещается Убрал 3 цифры и все стало на место. А вот с uint64_t у меня не вышло выдает ошибку в этой строке String str = String(i); call of overloaded 'String(uint64_t&)' is ambiguous как понимаю, переполнение пока вышел из положения String str = "111" + String(i); оставив unsigned long Но хотелось бы все же всю 13ти разрядную цифру использовать
в унсигнед лонг влезает максимум 4294967295. а зачем вообще нужна именно цифра? с ней планируются какие-то математические операции?
штрихкод в котором находятся данные думаю, не прокатит " double 4 байта Для AVR то же самое, что float . А так он 8 байт на более взрослом железе "
все равно не понял - если это число не будет ни на что делиться, умножаться, вычитаться, прибавляться и т.д., и оно нужно только в виде строки, то лучше сразу его и создавать в виде строки char str[]="1111111844743";
сам понял, что написал? вот, для изучения http://cppstudio.com/post/389/ как изучишь, можно приступать к строкам http://cppstudio.com/post/437/
char - это символ по английски массив символов = array of chars Поэтому ваша фраза "чар как массив символов" - это пример полнейшей белиберды. По сути вопроса - раз 13 цифр ни в одном типе Ардуино не помещаются. попробуйте разбить их на два числа и генерить отдельно, например сначала 1111111, а потом 844743 А полученные строчки просто "склеить" в строку "1111111844743"
согласен, сам когда писал, понимал что не правильно пишу, но устал, и не смог нормально сформулировать. суть вами сказанного я понимаю. спасибо спасибо за совет, я так и сделал, о чем писал в предыдущих постах в этой теме спасибо, уже дошло, что в лоб не решить проблему за ссылки спасибо, на базовом уровне все понятно, более менее, но изучу, вдруг чего упустил. Меня здорово подводит невнимательность ) пока не знаю, этот вопрос отложил на потом, сейчас для меня было главное сделать в минимально примитивном виде и понять возможности. .
так надо сначала именно это и выяснить. может окажется что проще в процессе генерации сразу в строку складывать, а не городить огромное число.
Разумно, я так и поступил, о чем и писал сразу же после вашего, что пока проблема решена именно таким способом. скорее всего так и останется. попробовал описать свои неудобства, но получается громоздко и непонятно,. вроде все решаемо, так что для меня вопрос пока решен. Спасибо за помощь