C# 谜团:4个字节应该代表一个日期,但如何表示呢?
因此,我能够从德国官方智能卡中读取一些不安全的值。 它适用于数字和字符串,但我不知道如何解释日期 我要读取的日期指定为4字节的日期,如规范中所示: 我读取的四个字节是:C# 谜团:4个字节应该代表一个日期,但如何表示呢?,c#,smartcard,winscard,C#,Smartcard,Winscard,因此,我能够从德国官方智能卡中读取一些不安全的值。 它适用于数字和字符串,但我不知道如何解释日期 我要读取的日期指定为4字节的日期,如规范中所示: 我读取的四个字节是: 0x4f 0x41 0x8d 0x00 (hex) 0100 1111 0100 0001 1000 1101 0000 0000 (binary) 并应代表该日期:2012年2月20日 二进制: 另一个: 0x58 0xAA 0x31 0x7f (hex) 0101 1000 1010 1010 0011 0001 0111
0x4f 0x41 0x8d 0x00 (hex)
0100 1111 0100 0001 1000 1101 0000 0000 (binary)
并应代表该日期:2012年2月20日
二进制:
另一个:
0x58 0xAA 0x31 0x7f (hex)
0101 1000 1010 1010 0011 0001 0111 1111 (binary)
应代表:2017年2月19日
19 - 0001 0011
02 - 0010
2017 - 0111 1110 0001
请帮我解开这个编码之谜
卡上的数据可以被商业软件读取,所以我想我得到的原始数据在任何方面都是可用的 有兴趣的人士: 供应商有一个非常大的规格,我已经搜索了很多次(http://eur-lex.europa.eu/LexUriServ/LexUriServ.do?uri=CELEX:32002R1360:DE:NOT 提供多种语言版本)
卡的结构首先在第119页中提到,链接的规范规定,
cardIssueDate
为TimeReal
类型(第2.20节)。同一规范将TimeReal
定义为自1970-01-01 00:00:00 GMT(即)编码为整数(第2.110节)以来的秒数。:(你是对的。我甚至想过这个问题,但在验证它时犯了一个错误。非常感谢!在左边使用Big-Endian/MSB,不要忘了检查你是否使用Big-Endian,而不管平台是什么。
19 - 0001 0011
02 - 0010
2017 - 0111 1110 0001