C++ Arduino将字节数组转换为字符串?

C++ Arduino将字节数组转换为字符串?,c++,arduino,rfid,C++,Arduino,Rfid,我正在做一个小RFID项目,但我有一个小问题 我有一个连接到Arduino UNO的RC522 RFID模块,我希望能够读取标签,然后将读取的ID与字符串进行比较 ID将被存储到大小为4的字节数组中 例如 byte readTAG[4]; 将举行 { C3, 7D, DF, C7 } 我现在想把这个数组转换成一个字符串,比如 "C37DDFC7" 这样…我可以做一些操作,比如 if(readTag == "12345678") { // Do something... } 我该怎

我正在做一个小RFID项目,但我有一个小问题

我有一个连接到Arduino UNO的RC522 RFID模块,我希望能够读取标签,然后将读取的ID与字符串进行比较

ID将被存储到大小为4的字节数组中

例如

byte readTAG[4];
将举行

{ C3, 7D, DF, C7 }
我现在想把这个数组转换成一个字符串,比如

"C37DDFC7"
这样…我可以做一些操作,比如

if(readTag == "12345678") {
    // Do something...
}
我该怎么做呢

提前谢谢

这是我的密码:

#include <MFRC522.h>
#include <SPI.h>

int RST_PIN = 9;
int SDA_PIN = 10;

byte readCard[4];

MFRC522 mfrc522(SDA_PIN, RST_PIN);

void setup() {
  Serial.begin(9600);
  SPI.begin();
  mfrc522.PCD_Init();
}

void loop() {
  ReadTAG();  

}

// Lese TAG aus und gebe die ID im Serial Monitor aus.
void ReadTAG() {
  // Wenn ein neuer TAG vorhanden ist UND erfolgreich gelesen werden konnte, dann Lese TAG aus.
  if (mfrc522.PICC_IsNewCardPresent() && mfrc522.PICC_ReadCardSerial()) {     
    for (int i = 0; i < 4; i++) { 
     readCard[i] = mfrc522.uid.uidByte[i];
     Serial.print(readCard[i], HEX);       
    }       
    Serial.println();    

    // Wenn der TAG ausgelesen wurde dann stoppe das Lesen da er sonnst das gleiche TAG vielemale ausließt.
    mfrc522.PICC_HaltA();
  }
}

关于C/C++的一些事情我很讨厌。有些我不知道

#define cmpID(var, b1, b2, b3, b4) \
( \
  var[0] == 0x ## b1 && \
  var[1] == 0x ## b2 && \
  var[2] == 0x ## b3 && \
  var[3] == 0x ## b4 \
)

 ...

if (cmpID(readTag, 12, 34, 56, 78))
{
   ...
}

有没有特别的原因让你想花额外的时间来转换,然后作为字符串进行比较,而不是仅仅作为字节进行比较?事实上,没有任何理由…我只是根本不知道如何进行比较。。。