Arduino関数が期待どおりに機能しません。オリジナルは656649ですが、文字列に変換すると1289が出力されます。何が起きているのでしょうか?ありがとう!Atoi()関数が動作しませんArduino
void setup() {
Serial.begin(9600);
}
void loop() {
String BT1 = "656649"
Serial.print(" String BT1: ");
Serial.print(BT1); // OUTPUT: 656649
char charBuf[50];
BT1.toCharArray(charBuf, 50) ;
Serial.print("Char buff: "); // OUTPUT: 656649
Serial.print(charBuf);
intBT1 = atoi(charBuf);
Serial.print(" intBT1: "); //OUTPUT: 1289
Serial.print(intBT1);
}
多分arduinoは16ビットシステムです。 '' atol''は動作するはずです.32ビットの数値には '' long''や ''(u)int32_t''を使うべきです。 – cmdLP
'sizeof(int)'を出力してください。どうしますか? – NathanOliver
656649は0x000A0509と等しい。 0x0509 = 1289 – franji1