2016-03-25 22 views
0

您好,我有十六进制的由MSC生成的时间戳字符串(是相邻基站记录移动用户的位置记录)。现在我想将十六进制字符串转换为人类可读的日期和时间。将BCD编码的十六进制值转换为时间戳/数据和时间(ASN.1语法)

听到实际十六进制字符串变量是一个八位字符串数据类型(ASN.1语法)

让我给一个示例十六进制字符串如何像

hexadecimal value : 1307301826042B0530 

听到通过转换所形成的十六进制值BCD编码的时间戳波纹管

Local time of UTC compression format 
--YY = Year 00 to 99  BCD encoded 
--MM = Month 01 to 12  BCD encoded 
--DD = Day 01 to 31  BCD encoded 
-- hh = hour 00 to 23  BCD encoded 
-- mm = minute 00 to 59  BCD encoded 
-- ss = second 00 to 59  BCD encoded 
-- S = Sign 0 = “+”, “-“  ASCII encoded 
-- hh = hour 00 to 23  BCD encoded 
-- mm = minute 00 to 59  BCD encoded 

所以以下表格显示八位字符串

的时间戳210
in ASN.1 syntax it look like TimeStamp ::= OCTET STRING (SIZE(9)) 

Octet 1 YY 
Octet 2 MM 
Octet 3 DD 
Octet 4 hh 
Octet 5 mm 
Octet 6 ss 
Octet 7 S 
Octet 8 hh 
Octet 9 mm 

所以根据上述表中的十六进制值可以被划分为休耕

Hex value : 1307301826042B0530 

    Octet 1 YY : 13 
    Octet 2 MM : 07 
    Octet 3 DD : 30 
    Octet 4 hh : 18   Hear every octet is of one byte each 
    Octet 5 mm : 26 
    Octet 6 ss : 04 
    Octet 7 S : 2B 
    Octet 8 hh : 05 
    Octet 9 mm : 30 

所以为十六进制转换为时间戳/日期和时间我没有如波纹管

首先我转换每个十六进制字节为BCD和BCD二进制和二进制到十进制然后我得到

Decimal : 685571919861616 

然后我试图转换成日期和时间

 String decimal = "685571919861616"; 
     Calendar c=Calendar.getInstance(); 
     c.setTimeInMillis(Long.parseLong(decimal)); 

     DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss"); 

     System.out.println(dateFormat.format(c.getTime())); 

但输出就像23694-11-28 09:54:21

即使我试图转换十六进制到十进制然后用java十进制转换成日期和时间,但输出就像8227-12-21 02:24:03

恳求帮助我就这个问题和我想知道在Bouncy castle API中是否有任何类可以做到这一点...?

任何帮助将不胜感激。

回答

0

之前处理一个编码文件的解码,我们应该有编码是怎么做明确的想法后,它需要短短的几秒钟正如我所说的字节串的时间戳值这个样子

解决上述问题

Hex value : 1307301826042B0530 

    Octet 1 YY : 13 
    Octet 2 MM : 07 
    Octet 3 DD : 30 
    Octet 4 hh : 18   Hear every octet is of one byte each 
    Octet 5 mm : 26 
    Octet 6 ss : 04 
    Octet 7 S : 2B 
    Octet 8 hh : 05 
    Octet 9 mm : 30 

它清楚地说,YY = 13个装置2013等明智MM = 07,DD = 30,HH = 18(24小时格式)....等

分析我得到震惊,因为它是后这么容易,因为我已经把我的脑袋刹了两天了使用我没有太多关于编码如何完成的信息。

相关问题