我正在研究基于RFID的考勤监控系统。我使用Mifare 1k Classic作为我的RFID和ACR122u作为我的读者。我了解到您可以使用STORE VALUE BLOCK APDU命令将值存储到卡中,也可以使用READ BLOCK APDU命令读取。两个命令都返回0x90 SW1,这意味着它成功传输。我的问题是如何在读取后获取/检索存储到VALUE BLOCK的值。例如,我从块0x05存储了值“15”。现在我尝试从块0x05获取值“15”。我在这里尝试了这些代码:
CommandAPDU comm1 = new CommandAPDU(new byte[] {(byte) 0xFF,(byte) 0xB1,(byte) 0x00,(byte) 0x05,(byte) 0x04});
ResponseAPDU read1 = channel.transmit(comm1);
它成功读取了块,但它没有显示该值。我尝试使用:
System.out.println(read1.getBytes());
System.out.println(read1.getData());
但两者都显示一些随机输出,如:[B@140fee
任何人都可以帮我吗?什么是输出意味着什么?
答案 0 :(得分:1)
输出[B@140fee
由对象的toString()
方法生成(使用println()
方法打印任意对象时会隐式调用。[
表示对象是一个数组类型对象。B
表示数组的元素类型是Byte
。@
符号后面的十六进制数字是对象哈希码的十六进制表示(无论数字是多少)由对象的hashCode()
方法返回。
因此,为了查看收到的字节,您需要将字节数组转换为可读的字符串表示形式(例如,每个字节值的连接十六进制表示形式)。