Преобразование каждой цифры целого числа в соответствующие символы ASCII
Например, каким будет процесс преобразования целого числа 1023 в символы ascii
0x31 (1) 0x30 (0) 0x32 (2) 0x33 (3)
Не ищу никаких библиотечных функций (я знаю о Serial.print(), а что нет). Я пытаюсь последовательно передавать целое число на последовательный монитор, и я хотел бы знать, каким будет процесс, чтобы алгоритм принимал целое число и превращал каждую цифру в соответствующий символ ascii
@ClockwerkSC, 👍2
Обсуждение2 ответа
Лучший ответ:
Чтобы преобразовать целое число в массив символов за один раз, используйте функцию itoa. Это похоже на то, что вам действительно нужно.
Чтобы преобразовать одну цифру из десятичной в ascii, просто добавьте '0', значение ascii для 0. Если вы просто хотите попытаться понять, что происходит, это что-то вроде этого.
char result[4] = {0};
int num = 345;
int digit = num % 10; // получаем 5 от конечного
result[2] = digit + '0'; // преобразуем в ascii и сохраняем
num /= 10; // избавляемся от 5
digit = num % 10; // получаем 4 от конечного
result[1] = digit + '0'; // преобразовать в ascii и сохранить
num /= 10; // избавиться от 4
digit = num % 10; // получить 3 от конечного
result[0] = digit + '0'; // преобразовать в ascii и магазин
Serial.print(result); // печатает "345"
Вот тестовый скетч с использованием iota()
.
int number = 1023;
const byte numberLength = 4;
char outputBuffer[numberLength + 1];
void setup(){
Serial.begin(9600);
itoa(number, outputBuffer, 10);
for(byte i = 0; i < numberLength; i++){
Serial.println(outputBuffer[i]);
}
Serial.println();
for(byte i = 0; i < numberLength; i++){
Serial.print("0x");
Serial.println(outputBuffer[i], HEX);
}
}
void loop(){}
- AT-команда не отвечает на последовательный монитор
- Как отправить команду AT на sim800l с помощью SoftwareSerial
- Как остановить SoftwareSerial от получения данных и повторно включить его в какой-то другой момент?
- Ардуино для чтения с преобразователя RS232 в последовательный модуль TTL
- Не нашел датчик отпечатков пальцев :( Arduino Mega 2560 Adafruit Fingerprint Sensor
- Как работает последовательная связь на Arduino?
- Как связаться с ESP8266 ESP01, отправив данные через программный сериал на Arduino Uno?
- Ошибка 'Serial' was not declared in this scope
Это то, что вы пытаетесь сделать? http://www.cplusplus.com/reference/cstdlib/itoa/, @VE7JRO
Если вы ищете «реализация C++ itoa», вы можете найти примеры для этого, @chrisl
как насчет плавающего значения? можно преобразовать значение с плавающей запятой с помощью itoa ()?, @Norazlan K