Ниже приведен код Arduino (C ++), который упаковывает один и ноль символов, содержащихся во входных данных String
, в выходные данные String
.Он делает это, вставляя новый символ в вывод String
для каждых 8 пройденных единиц и ИЛИ - 0x01
в нужном месте, когда текущий символ на входе String
равен '1'
.
String packPixels(String input) {
String out;
for(int i=0; i<input.length; i++) {
if(i % 8 == 0) {
out += 0x00;
}
if(input[i] == '1') {
out[out.length-1] |= 1 << i % 8;
}
}
return out
}
(ps этот код должен быть в состоянии использоваться с минимальными усилиями при обработке)
Использование будет выглядеть так:
Serial.write(packPixels(pixels));
Вы должны посмотреть на std::vector
и операция по модулю .
Не следует помещать двоичные данные в String
, для этого лучше подходит std::vector
, и он четко сообщает, чтосодержимое вектора составляет не символов, а биты.