ミステリー:4バイトは日付を表すべきですが、どうやって?
質問
だから私は公式ドイツのスマートカードからいくつかの無担保価値を読むことができました。 それは数字や弦のためにうまく機能しますが、私はあなたの頭を包むことができません。
読みたい日付は、仕様に見られるように4バイト日として指定されています。 http://imgur.com/ 3JU8K
私が読んだ4バイトは次のとおりです。
0x4f 0x41 0x8d 0x00 (hex)
0100 1111 0100 0001 1000 1101 0000 0000 (binary)
.
を表すべき日:20.02.2012 バイナリ:
20 - 0001 0100
02 - 0000 0010
2012 - 0111 1101 1100
.
もう1つ:
0x58 0xAA 0x31 0x7f (hex)
0101 1000 1010 1010 0011 0001 0111 1111 (binary)
.
を表すべきです:19.02.2017
19 - 0001 0011
02 - 0010
2017 - 0111 1110 0001
.
このエンコーディングを解決するのを手伝ってください - riddle
カードからのデータは商用ソフトウェアで読み取ることができるので、私が得る生データは何らかの方法で使えるようにします。
興味について: ベンダーには、多数の時間を検索した非常に巨大な仕様があります(http://eurly-lex.europa.eu/xuriserv/urserv.dourieserverex:32002R1360:De:複数言語で利用可能)。 カードの構造は119ページの
に最初に記載されています。解決
リンクされた仕様は、cardIssueDate
はTimeReal
型であると述べています(セクション2.20)。同じ仕様は、1970-01-01 00:00:00 GMT( unix)からの秒数としてのTimeReal
を定義します。時間)としてエンコードされた ASN.1 整数(セクション2.110)。
所属していません StackOverflow