Arduino 8位表示法

Arduino 8位表示法,arduino,binary,zero-padding,Arduino,Binary,Zero Padding,我的问题是Arduino特有的,我编写了一个代码,将字符数组(文本)转换为二进制字符串,但问题是二进制表示不是8位,有时是7位、6位甚至1位表示(如果十进制值为1)。我使用字符串构造函数String(letter,BIN)将字母的二进制表示形式存储在字符串中 我想要一个8位的表示,甚至是7位的表示 String text=“大学见我”; 串入位; 字节后; 字节位[8]; 字节x; char改变了_char; 无效设置(){ Serial.begin(9600); } void循环(){ Ser

我的问题是Arduino特有的,我编写了一个代码,将字符数组(文本)转换为二进制字符串,但问题是二进制表示不是8位,有时是7位、6位甚至1位表示(如果十进制值为1)。我使用字符串构造函数
String(letter,BIN)
将字母的二进制表示形式存储在字符串中

我想要一个8位的表示,甚至是7位的表示

String text=“大学见我”;
串入位;
字节后;
字节位[8];
字节x;
char改变了_char;
无效设置(){
Serial.begin(9600);
}
void循环(){
Serial.println(“按任意键开始”);
inbits=转换到Bits(文本);
}
字符串转换位(字符串纯文本)
{
字符串总数,临时值;
总计=字符串(纯文本[0],BIN);
总计=字符串(总计+“”);

对于(int i=1;i如果参数字符串的长度小于8,则在“0”之前加上前缀,直到其长度为8位。

您可以执行以下类似操作:

void PrintBinary(const std::string& test)
{
    for (int c = 0; c < test.length(); c++)
    {
        unsigned bits = (unsigned)test[c];
        for (int i = 0; i < 8; i++)
        {
            std::cout << ((bits >> (7 - i)) & 1U);
        }
        std::cout << " ";
    }
}
String(字母,BIN)
不会对字符串进行零填充。你必须自己做

您需要在
0
字符前面加上前缀,直到二进制字符串长度为8个字符

字符串转换比特(字符串纯文本)
{
字符串总数,临时值;
总数=”;
对于(int i=0;i 0)
总计=字符串(总计+“”);
总计=字符串(总计+温度);
}
序列号。打印项次(总计);
返回总数;
}

请显示输入和输出示例;这一点目前相当模糊。这不是二进制,而是文本表示。
PrintBinary("Hello"); //Output: 01001000 01100101 01101100 01101100 01101111