我的 Arduino 中有一串二进制数字。我需要将它们转换为数组。该数据代表 LED 显示屏中的光柱。在我的程序中,我已经有一个工作函数,它接受一个数组并使用数据在屏幕上显示单词。数据需要格式化如下所示:
我的字符串可能有几种不同的外观。以下是示例:
char CurrentWord = "11111110001000000100011111110000000B00000001000001111111110000010000000";
或者
char CurrentWord = "1111111 0001000 0001000 1111111 0000000 B0000000 1000001 1111111 1000001 0000000";
或者甚至:
char CurrentWord = "B1111111 B0001000 B0001000 B1111111 B0000000 B0000000 B1000001 B1111111 B1000001 B0000000";
上面的示例将在屏幕上生成单词“Hi”。然而,为了使显示正常工作,数据必须转换为数组。所以它必须看起来像这样:
int CurrentWordInt[] = {B1111111, B0001000, B0001000, B1111111, B0000000, B0000000, B1000001, B1111111, B1000001, B0000000};
我该怎么做?
最佳答案
如果问题是如何让 C++ 解析二进制文件,那么使用这个宏:
#define B(in) ( ((in&(1<< 0))>> 0) \
|((in&(1<< 3))>> 2) \
|((in&(1<< 6))>> 4) \
|((in&(1<< 9))>> 6) \
|((in&(1<<12))>> 8) \
|((in&(1<<15))>>10) \
|((in&(1<<18))>>12) \
|((in&(1<<21))>>14) \
|((in&(1<<24))>>16) \
)
#include <iostream>
int main() {
int CurrentWordInt[] = {B(01111111), B(00001000), B(0001000), B(01111111), B(0000000)};
std::cout << CurrentWordInt[0] << ' ';
std::cout << CurrentWordInt[1] << ' ';
std::cout << CurrentWordInt[2] << ' ';
std::cout << CurrentWordInt[3] << ' ';
std::cout << CurrentWordInt[4] << ' ';
}
显示 127 8 8 127 0
请注意,此宏要求所有输入均为零,后跟七个一/零。
如果这不是您的问题,那么我不知道您要问我们什么。
关于c++ - 将一个字符串分成一个数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8086281/