[英]Arduino char array to integer value
愚蠢的問題在這里:
我正在嘗試將char數組轉換為整數。 這是我的情況(從主要代碼中提取,我已經簡單地確定了..):
int val;
char *buff;
uint8_t v1 = 2;
uint8_t v2 = 25;
buff[0] = v1;
buff[1] = v2;
val = strtol(buff, NULL, 16);
在那種情況下,val始終返回“ 0”,但是,如果我將“ buff”替換為“ 0x225”,它將返回549的期望值。
我做錯了什么? 提前感謝。
您需要學習C(實際上是arduino是用C ++編程的C ++)。
strtol將字符串轉換為數字。
C中的string是一個以零結尾的char元素數組(不是'0'
而是0
)。 因此,“ 0x225”是{'0', 'x', '2', '2', '5', 0}
的數組
'2'
不是數字2
。 它是char'2'的ASCII表示形式,十進制為50。
buff[0] = '0';
buff[1] = 'x';
buff[2] = '2';
buff[3] = '2';
buff[4] = '5';
buff[5] = 0;
val = strtol(buff, NULL, 16);
buff[0] = 48;
buff[1] = 120;
buff[2] = 50;
buff[3] = 50;
buff[4] = 53;
buff[5] = 0;
val = strtol(buff, NULL, 16);
您的代碼還有許多其他問題。 您需要了解25和0x25是什么(它們不相等)。 您應該從書本和PC編譯器開始,並從最基礎的知識中學習語言。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.