Mistério:4 Bytes devem representar uma Data, mas como?
Pergunta
Então, eu tenho sido capaz de ler alguns inseguro valores a partir de um oficial alemão de cartão inteligente.Ele funciona muito bem para Números e Cadeias de caracteres, mas eu não posso quebrar a minha cabeça em torno de como interpretar Datas.
A data que eu quero ler é especificado como 4 Bytes Data, como visto na especificação: http://imgur.com/3jU8k
Os quatro bytes que eu li são:
0x4f 0x41 0x8d 0x00 (hex)
0100 1111 0100 0001 1000 1101 0000 0000 (binary)
e deve representar esta data:20.02.2012 binário:
20 - 0001 0100
02 - 0000 0010
2012 - 0111 1101 1100
Outro:
0x58 0xAA 0x31 0x7f (hex)
0101 1000 1010 1010 0011 0001 0111 1111 (binary)
deve representar:19.02.2017
19 - 0001 0011
02 - 0010
2017 - 0111 1110 0001
Por favor me ajude a resolver este Codificação Enigma
Os dados do cartão pode ser lido por um software comercial, então eu acho que os dados brutos que eu recebo é usável em qualquer forma.
Para os interessados:O fornecedor tem um enorme especificação que eu procurei por várias vezes (http://eur-lex.europa.eu/LexUriServ/LexUriServ.do?uri=CELEX:32002R1360:DE:NOT Disponível em vários Idiomas) A estrutura da carta é mencionado pela primeira vez na página 119
Solução
Vinculado especificação diz que cardIssueDate
é do tipo TimeReal
(Seção 2.20.).A mesma especificação define TimeReal
como o número de segundos desde a 1970-01-01 00:00:00 GMT (i.e. Tempo do UNIX) codificado como ASN.1 INTEIRO (Seção 2.110.).