2016-03-17 1076 views
3

我正在研究一個Arduino項目,並且希望將十六進制值存儲爲字符串。將十六進制值存儲爲字符串(Arduino項目)

如:十六進制是C697C63B

for (byte i = 0; i < bufferSize; i++) { 
    Serial.print(buffer[i], HEX); 
} 

我想字符串存儲爲x = "C697C63B";

String CardID = ""; 
    for (byte i = 0; i < bufferSize; i++) { 
    CardID += (buffer[i],HEX); 
    Serial.println(CardID); 
    } 

但斯汀存儲爲CardID = 16161616

對不起,我剛開始C++的一週,我花了3天才找到答案。

好吧,我找到了答案,現在謝謝大家,幫

String CardID = ""; 
    for (byte i = 0; i < bufferSize; i++) 
    CardID += String(buffer[i], HEX); 
    Serial.print(CardID); 
+2

'CardId中+ =(緩衝[I],HEX);'沒有做什麼,你認爲它。請閱讀[逗號運算符](http://stackoverflow.com/questions/54142/how-does-the-comma-operator-work)。另外,你需要提供[mcve]。 –

回答

2

您應該使用ostringstream

auto outstr = std::ostringstream{}; 
outstr << std::hex << 0xC697C63Bul; 
auto myHexString = outstr.str(); 
+0

對不起** ostringstream **在我的arduino項目中不工作你有另一個想法嗎? – user1437099

+1

@ user1437099您可能錯過了添加'#包括'?在這裏看到:http://stackoverflow.com/a/9850537/1879699 – mrt

+0

已經嘗試 的#include 的#include 的#include 的#include 但不能 – user1437099

0

您可以使用C風格的sprintf:

char str[100]; 
sprintf(str, "%08x", HEX); 
+1

請不要在C++中教C風格的編程。 – cdonat

0
#include <stdio.h> 

int main(void) { 
    int nHex = 0xC697C63B; 
    char pHexStr[100]; 
    sprintf(pHexStr,"%x",nHex); 
    fprintf(stdout, "%s", pHexStr); 

    return 0; 
} 
+1

請不要在C++中教C風格的編程。 – cdonat

相關問題