преобразовать строку, представляющую двоичное число, в двоичное
У меня есть последовательный вход "1111111" и я хотел бы преобразовать это в двоичный файл B1111111, который я могу отправить в светодиодную матрицу.
Я пытался выполнить поиск, но все результаты вводили в заблуждение, что приводило к преобразованию полного текста в двоичный код. Пожалуйста, сообщите.
редактировать: Это мой пример кода, в котором я пропустил шаг в части преобразования
LedControl mat = LedControl(DIN_PIN, CLK_PIN, CS_PIN, MAX_SEG); // MAX7219
void OneLine() {
//вход
char text[] = "11111110";
//конвертируем в двоичное число каким-то образом
//показываем одну строку
mat.setRow(0, 0, convertednr);
}
@vilmarci, 👍-1
Обсуждение1 ответ
Как отметил @EdgarBonet, я могу преобразовать строку в двоичное число с помощью strtoul()
и передать ее в свой светодиодный элемент управления.
Добавляю это в качестве ответа для будущих читателей:
LedControl mat = LedControl(DIN_PIN, CLK_PIN, CS_PIN, MAX_SEG); // MAX7219
void OneLine() {
//вход
char text[] = "11111110";
//конвертируем в число
uint32_t convertednr = strtoul(text, NULL, 2);
//распечатать
mySerial.println(convertednr);
//показываем одну строку
mat.setRow(0, 0, convertednr);
вы можете использовать mySerial.println(convertednr, BIN);
, @Juraj
По поводу «_Я могу преобразовать строку в десятичное число_»: обратите внимание, что strtoul()
преобразует строку в **двоичное** (не _десятичное_) число, и именно это использует элемент управления светодиодом (convertednr
— это двоичное число). Вас может смутить тот факт, что mySerial.println(convertednr) преобразует это двоичное число в десятичное строковое представление с целью его отображения на последовательном порту., @Edgar Bonet
спасибо @EdgarBonet, исправил текст, @vilmarci
- Как изменить переменную при нажатии кнопки, подключенной к контакту 2
- Акцептант векселей ИКТ
- Обеспечиваем более быстрое и точное обнаружение MindWave Mobile
- Самый прямой способ назначить байты Serial.read() массиву?
- Код CRC8 не работает должным образом
- Как точно получить значения потенциометра через USB-порт?
- Ведение журнала всех вызовов Serial.print на устройстве
- Загрузка Arduino Nano дает ошибку: avrdude: stk500_recv(): programmer is not responding
«Я пытался выполнить поиск, но все результаты вводили в заблуждение». Как насчет того, чтобы начать с понимания [ASCII](https://en.wikipedia.org/wiki/ASCII)? ASCII «1», отображаемый на вашем последовательном мониторе, имеет двоичный код 0x31, двоичное значение 1 — это ASCII «1» — «0» (0x31 — 0x30)., @hcheung
Вы искали что-то вроде «двоичного кода C++ в int»? Существует функция strtoi(), которая также принимает параметр с используемой системой счисления (2 для двоичного кода). Пожалуйста, попробуйте, @chrisl
зачем вам конвертировать в двоичный? ... что вы будете делать с двоичным числом?, @jsotola
Я получаю это как последовательный ввод и хотел бы отправить его на ряд светодиодных дисплеев 8x8 (max7219)., @vilmarci
зачем вам для этого двоичное число?, @jsotola
Добро пожаловать в SE/Arduino! Пожалуйста, посетите [тур], чтобы узнать, как работает этот сайт, и прочитайте «[спросить]». Затем вернитесь и [отредактируйте] свой вопрос, добавив хотя бы один пример того, что вы пробовали., @the busybee
@jsotola добавил пример кода., @vilmarci
@chrisl:
strtoi()
не является стандартным. Ему следует использовать [strtol()
](https://man7.org/linux/man-pages/man3/strtol.3.html)., @Edgar Bonet@EdgarBonet Спасибо, это сработало, и мне не нужно дополнительно конвертировать этот двоичный файл, светодиодный элемент управления может с этим работать., @vilmarci
Является ли ваше изменение решением? Если да, то удалите его из вопроса и напишите правильный ответ. Вы можете пометить его (позже) как принятый, если он вам больше подходит. Именно так работает этот сайт вопросов и ответов, это не форум. -- Если это не решение, [отредактируйте] и объясните, почему., @the busybee
@thebusybee решение было в комментарии EdgarBonet: преобразовать в целое число, тогда я смогу передать это в светодиодную матрицу без дальнейшего преобразования., @vilmarci
@vilmarci Как уже упоминал busybee, вам не следует менять исходное сообщение, чтобы оно было правильным. Это сбило с толку будущих читателей этого поста, и они не могут понять, в чем проблема. Вам следует либо опубликовать свой рабочий код в качестве ответа, либо просто оставить его «как есть»., @hcheung