0

我正在开发基于 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

谁能帮我这个?输出是什么意思?

4

1 回答 1

1

输出[B@140fee由对象的toString()方法生成(使用该方法打印任意对象时会隐式调用该println()方法。[表示该对象是数组类型的对象。B表示该数组的元素类型是。符号Byte后面的十六进制数字是@对象哈希码的十六进制表示(对象hashCode()方法返回的任何数字。

因此,为了查看您收到的字节,您需要将字节数组转换为可读的字符串表示形式(例如,每个字节值的串联十六进制表示形式)。

于 2014-01-20T15:05:34.300 回答