簡體   English   中英

Arduino char數組為整數值

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM