Не могу понять, что происходит с выводом в Serial!!!

Didi39

✩✩✩✩✩✩✩
5 Мар 2025
3
0
Оформи код соответствующим тэгом, см. Правила
Здравствуйте друзья! Не могу разобраться что происходит:
void loop() {
int x1;
int x2;
char data1[4] = "2735";
char temp1[2];
char temp2[2];
temp1[0] = data1[0];
temp1[1] = data1[1];
temp2[0] = data1[2];
temp2[1] = data1[3];
x1 = atoi(temp1);
x2 = atoi(temp2);
Serial.println();
//Serial.print(x1);
Serial.print(":");
Serial.print(x2);
Serial.println();
delay(1000);

}
Этот код выводит в Serial следующее: ( :35).
Но если раскомментировать строку то выводится: ( 27:3527).
Если перенести строку Serial.print(x1); в конец кода, она все равно приписывается к Serial.print(x2); и выводится:
( :3527
27)
Это ж бред какой-то!!!
Заранее благодарю за помощь!Yoo.jpg
 
Изменено:

Эдуард Анисимов

★★★★★★✩
23 Сен 2019
2,424
985
58
Марий-Эл
char* data1 = "2735";
Serial.print(":");
Serial.print(data1[0]-30);
Serial.print(data1[1]-30);
Serial.print(data1[2]-30);
Serial.println(data1[3]-30);

Я только не понял, что вы хотите.
Как понял, так написал.

Только терминал выводит шестнадцатеричные числа?
 
Изменено:

Didi39

✩✩✩✩✩✩✩
5 Мар 2025
3
0
Спасибо Эдуард Анисимов!
Мне нужно понять почему он дважды выводит X1(приписывает к X2). Он должен выводить X1:X2 а он выводит X1:X2X1.

Ой, в примере выше одна строка куда-то делась!!!

int x1;
int x2;
char data1[4] = "2735";
char temp1[2];
char temp2[2];
temp1[0] = data1[0];
temp1[1] = data1[1];
temp2[0] = data1[2];
temp2[1] = data1[3];
x1 = atoi(temp1);
x2 = atoi(temp2);
Serial.println();
Serial.print(x1);
Serial.print(":");
Serial.print(x2);
Serial.println();
delay(1000);

Вот. Оно выводит 27:3527 (X1:X2X1). Если поменять местами Serial.print(x1); и Serial.print(x2); то выводит 3527:27 (X2X1:X1). А если Serial.print(x1); убрать то выводит :35 ( :X2). Как понять это!!?