READ BINARY
APDUs ऑफसेट फ़ाइल, P1 और P2 में कोडित के लिए बाइट्स अनुमति देते हैं, और जवाब में बाइट की संख्या लंबाई के लिए Le उपयोग करते हैं, READ BINARY
के लिए। पी 1 उच्च बाइट, या सबसे महत्वपूर्ण बाइट है। हालांकि पी 1 का सबसे ऊपर बिट यह इंगित करने के लिए आरक्षित है कि पी 1 में लघु फ़ाइल पहचानकर्ता भी शामिल है। यह मूल्य 0
पर रहना चाहिए यदि आप पहले से ही एक फ़ाइल पढ़ रहे हैं, एक अधिकतम 32Ki की भरपाई के साथ छोड़ - 1.
मैं चश्मा है कि आप लिंक करने के बाद नहीं पढ़ सकते हैं लेकिन पर कि READ BINARY
APDU मान लें आपके कार्ड एक ही तरीके से काम करता है।
पहले 256 बाइट पढ़ने के लिए आपका आदेश सही लगता है, यह नोट करते हुए कि Le==0x00
256 बाइट्स के लिए एक पठन इंगित करता है।
पढ़ने के लिए बाइट्स ऑफसेट में शुरुआत 256, 512, आदि, incrementing P1 शुरू करते हैं, उदाहरण के लिए:
00 B0 01 00 00
00 B0 02 00 00
00 B0 03 00 00
पढ़ने के लिए 256 बाइट्स में ऑफसेट 257 (0x101) शुरुआत:
00 B0 01 01 00
ऑफसेट 600 (0x258):
00 B0 02 58 00
अपने कोड में, आप स्टोर करने के लिए ऑफसेट जावा int
उपयोग कर रहे हैं, आप आमतौर पर कुछ इस तरह के साथ P1 incrementing खत्म करेंगे:
int offset;
int P1, P2;
while (continueReading)
{
// ...
P1 = (offset >> 8) & 0xFF;
P2 = offset & 0x00FF;
// ...
// send APDU
}
कैसे एक फ़ाइल के आकार का संकेत मिलता है कार्यान्वयन पर निर्भर करता है। आम तौर पर आप ईएफ (00 A4 00 00 02 fileId
) पर एक चयन द्वारा लौटाए गए फ़ाइल नियंत्रण सूचना (एफसीआई) संरचना से फ़ाइल आकार प्राप्त कर सकते हैं। फ़ाइल के आकार को फ़ाइल की सामग्री में भी एम्बेड किया जा सकता है। यदि संभव हो तो आपको फ़ाइल के आकार को बताने के लिए आपको स्टेटस शब्दों पर भरोसा नहीं करना चाहिए।
अलावा: Le, Ne और अजीब आईएनएस
यह महत्वपूर्ण है कि आप केवल वृद्धि बाइट्स की राशि है कि आप वास्तव में प्रतिक्रिया डेटा (RDATA) के भीतर प्राप्त साथ ऑफसेट। ध्यान दें कि यदि P3 = Le Le Le enc encodes, जो अधिकतम प्रतिक्रिया डेटा का आकार है। आप उससे कम प्राप्त कर सकते हैं।
तो फ़ाइल आकार 32Ki है या अधिक है तो आप अजीब आईएनएस (B7
) के साथ पठित बायनरी का उपयोग करने के 32Ki उपरोक्त डेटा पढ़ने की जरूरत है। उस मामले में आरडीएटीए में ओवरहेड भी हो सकता है। जाहिर है कि - बदले में - ऑफ़सेट गणनाओं और फ़ाइल के अंत में पढ़ने के लिए गणना को प्रभावित कर सकता है।
पी 3 पढ़ने के लिए बाइट्स की संख्या नहीं है। इसमें ले है, जो एपीडीयू प्रतिक्रिया में वापस आने के लिए बाइट्स की अधिकतम संख्या का एन्कोडिंग है। यह * लगभग * वही है। –
इस बात पर निर्भर करता है कि आप वास्तव में कौन पूछते हैं। मैंने जीएसएम चश्मे के साथ बहुत अधिक समय बिताया, जहां 'पी 3' = लंबाई, लेकिन आप बिंदु अभी भी एक अच्छा है, ज्यादातर लोग' ले 'और यह _is_ स्पष्ट का उपयोग करते हैं। – pb2q
यह आपके रुख पर हमले के रूप में नहीं था। समस्या यह है कि विनिर्देशों के कई निर्माता अंतर को समझ नहीं पाते हैं, इसलिए डिफ़ॉल्ट रूप से यह दोनों में से एक बन गया है (या कभी-कभी दोनों का मिश्रण)। –