gpt4 book ai didi

c++ - Arduino Serial.print(, BIN) 奇怪的行为

转载 作者:塔克拉玛干 更新时间:2023-11-03 07:22:24 24 4
gpt4 key购买 nike

代码:

char a = 0x70;
char b = 0x80;

Serial.println(a, BIN); // Should print 1110000
Serial.println(b, BIN); // Should print 10000000

输出:

1110000
11111111111111111111111110000000

我知道这与第一位是负数有关,也许它会尝试默认将其打印为 int?但是,使 char unsigned 不会改变这一点。

最佳答案

这是受到@Ben 对该问题的评论的启发。 Serial.println((unsigned char)b, BIN); 似乎获得了所需的输出。

这是我的完整草图:

void setup() {
Serial.begin(9600);
// Confirm observations from question
char a = 0x70;
char b = 0x80;

long aPrint = Serial.println(a, BIN); // Should print 1110000
long bPrint = Serial.println(b, BIN); // Should print 10000000

// Output println results (Ben comment #1)
Serial.print("aPrint: ");
Serial.println(aPrint);
Serial.print("bPrint: ");
Serial.println(bPrint);

// Explicit cast from char
Serial.print("(int)b: ");
Serial.println((int)b);

// Via unsigned char
Serial.print("(unsigned char)b: ");
Serial.println((unsigned char)b);
// And print in binary
Serial.println((unsigned char)b, BIN);
}

void loop() {
}

输出:

1110000
11111111111111111111111110000000
aPrint: 9
bPrint: 34
(int)b: -128
(unsigned char)b: 128
10000000

关于c++ - Arduino Serial.print(, BIN) 奇怪的行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24087030/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com