1

我正在编写从学生证读取数据的代码。卡初始化后,选择卡上的目录和文件,我开始使用 READ BINARY (B0) 从其中读取数据。

根据ISO 7816-4:Interindustry Commands for Interchange

如果 P1 中的 bit8=0,则 P1||P2 是从文件开头开始以数据单元读取的第一个字节的偏移量。

我正在读取数据块,每 16 个字节。在第一个循环中我想阅读offset = 0所以我设置P1 = 0x00并且P2 = 0x00一切正常,前 16 个字节是从卡传输的。

问题从第二个循环开始,接下来的 16 个字节应该被读取,offset = 16所以我设置P1 = 0x00P2 = 0x10但我从offset = 64.

经过一些测试,我发现它P1||P2总是被解释为 4 个字节的偏移量。

似乎我的卡正在使用每个 DWORD 大小的数据单元(提到 ISO 7816-4)。

Web 中的所有示例都将数据单元视为字节,并且一切似乎都适用于作者/用户。我的问题是:如何在应用程序运行时确定数据单元的大小 ?

4

0 回答 0