C++ 读取mifare卡块并将其部分块与一些文本进行比较

C++ 读取mifare卡块并将其部分块与一些文本进行比较,c++,arduino,nfc,mifare,C++,Arduino,Nfc,Mifare,我正在用RC522读取一个Mifare卡块,我在一个块中写了“RhytonUser001” Arduino是这样读的: byte readbackblock[18];//This array is used for reading out a block. The MIFARE_Read method requires a buffer that is at least 18 bytes to hold the 16 bytes of a block. for (int j=0 ; j<

我正在用RC522读取一个Mifare卡块,我在一个块中写了“RhytonUser001”

Arduino是这样读的:

byte readbackblock[18];//This array is used for reading out a block. The MIFARE_Read method requires a buffer that is at least 18 bytes to hold the 16 bytes of a block.

for (int j=0 ; j<16 ; j++) //print the block contents
{
    char c = readbackblock[j];
    lcd.print(c);
}
更新:
示例:
在上面的代码中,请思考:
readbackblock[j]=082 104 121 116 111 110 085 115 101 114 048 048 049
我可以获取它并将其转换为char,这样它就变成:RhytonUser001
然后我想拆分它
String sth=split(***,'User')
并获取某事物[0]
并将其与雷顿进行比较,以检查其是否为雷顿
但是当我尝试这样做的时候,我得到了一个错误。
根据中给出的信息,我无法拆分字符(因为它不是字符串)。那么,如何将readbackblock[j]与Rhyton或任何其他文本进行比较呢?

您可以通过连接16个字符来构建一个
String
对象

String strBlock = "";
for (int j=0 ; j<16 ; j++) //print the block contents
{
    char c = readbackblock[j];
    lcd.print(c);
    strBlock += c;
}

请注意字符串的实际长度。如果你试图读过结尾,这是未定义的行为。上面的代码假设16个字符中没有一个是0

ASCII字符是人类可读性最强的字符。顺便说一句,readbackblock[j]什么都不做,就像
42什么都不做。请发布真实代码。如果它是ASCII格式,那么它已经是人类可读的格式,只需在数组末尾添加一个“\0”终止符,然后您就可以打印它。@splaten例如,我需要将65转换为a以在LCD中显示,然后我需要将其转换为字符串以拆分,并查看Rhyton是否存在!问题编辑和更新…谢谢,它工作了,现在我需要以这种方式拆分字符串sth=split(strBlock,'User');
String strBlock = "";
for (int j=0 ; j<16 ; j++) //print the block contents
{
    char c = readbackblock[j];
    lcd.print(c);
    strBlock += c;
}
String strFirst6 = strBlock.substring( 0, 6 );
if ( strFirst6 == "Rhyton" ) {
    ...