将代码更改为:
data = new byte[] {(byte) 0x63, (byte) 0x02};
apdu.setOutgoing();
apdu.setOutgoingLength((short) data.length);
apdu.sendBytesLong(data, (short) 0, (short) data.length);
数据字节{0x63,0x02}将被发送出去 .
您在问题中提到的数据:
响应APDU数据是:
responseApdu.getData():
{0x80,0x32,0x0,0x0,0x8,0x0,0x0,0x1,0x5c,0x6,0xf9,0x63,0x33,0x1,0x2,0x90,0x0}
表示命令数据为: { 0x80, 0x32, 0x0, 0x0, 0x8, 0x0, 0x0, 0x1, 0x5c, 0x6, 0xf9, 0x63, 0x33, 0x1}; ,响应数据为: { 0x2, 0x90, 0x0 } ;
apdu缓冲区是:
SendAPDU()数据(apdu.getBuffer()):
{0x2,0x32,0x0,0x0,0x8,0x0,0x0,0x1,0x5c,0x6,0xf9,0x63,0x33,0x0,.....(此点后全部为0x0)}
抵消CDATA:5
表示将发送数据字节0x02(发送长度为1字节),此字节后将发送SW 0x9000({0x90,0x00}) . 传出时不使用偏移CDATA . APDU缓冲区中的其他数据字节是您的APDU命令,第一个字节由输出字节覆盖(这里只有1个字节,0x02) .
Note :APDU.sendBytesLong的进程(数据,偏移量,长度):
1) . 将具有偏移量和长度的数据复制到APDU缓冲区;
2) . 使用APDU缓冲区发送数据;
3) . 发送SW;