gpt4 book ai didi

java - 从读取 block APDU 命令中检索并显示值 smartcardio

转载 作者:行者123 更新时间:2023-12-01 13:36:23 25 4
gpt4 key购买 nike

我正在开发基于 RFID 的考勤监控系统。我使用 Mifare 1k Classic 作为我的 RFID,使用 ACR122u 作为我的阅读器。我了解到您可以使用 STORE VALUE BLOCK APDU 命令将值存储到卡中,也可以使用 READ BLOCK APDU 命令读取值。两个命令都会返回 0x90 SW1,这意味着传输成功。我的问题是如何在读取后获取/检索存储到值 block 中的值。例如,我存储了 block 0x05 中的值“15”。现在我尝试从 block 0x05 获取值“15”。我在这里尝试了以下代码:

CommandAPDU comm1 = new CommandAPDU(new byte[] {(byte) 0xFF,(byte) 0xB1,(byte) 0x00,(byte) 0x05,(byte) 0x04});
ResponseAPDU read1 = channel.transmit(comm1);

它成功读取了 block ,但不显示值。我尝试使用:

System.out.println(read1.getBytes());
System.out.println(read1.getData());

但两者都显示一些随机输出,例如:[B@140fee

有人可以帮我解决这个问题吗?输出意味着什么?

最佳答案

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

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

关于java - 从读取 block APDU 命令中检索并显示值 smartcardio,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21236483/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com