2016-03-17 1106 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

相关问题