/// <summary>
/// OctetString转时间
/// </summary>
/// <param name="ss">字符串如 07 E3 06 06 11 10 0A 00 2B 08 00</param>
/// <returns>2012-09-23 17:01:27</returns>
public static string OctetString2DateAndTime(string ss)
{
// 07 E3 06 06 11 10 0A 00 2B 08 00
byte[] bts=ss.Trim().Split(' ').Select(s => byte.Parse(Convert.ToInt32("0x" + s, 16).ToString())).ToArray();
byte[] format_str = new byte[19]; //保存格式化过后的时间字符串
int year = bts[0] * 256 + bts[1];
int month = bts[2];
int day = bts[3];
int hour = bts[4];
int minute = bts[5];
int second = bts[6];
int msecond = bts[7];
//以下为格式化字符串
int index = 3;
int temp = year;
for (; index >= 0; index--)
{
format_str[index] = (byte)(48 + (temp - temp / 10 * 10));
temp /= 10;
}
format_str[4] = (byte)'-';
index = 6;
temp = month;
for (; index >= 5; index--)
{
format_str[index] = (byte)(48 + (temp - temp / 10 * 10));
temp /= 10;
}
format_str[7] = (byte)'-';
index = 9;
temp = day;
for (; index >= 8; index--)
{
format_str[index] = (byte)(48 + (temp - temp / 10 * 10));
temp /= 10;
}
format_str[10] = (byte)' ';
index = 12;
temp = hour;
for (; index >= 11; index--)
{
format_str[index] = (byte)(48 + (temp - temp / 10 * 10));
temp /= 10;
}
format_str[13] = (byte)':';
index = 15;
temp = minute;
for (; index >= 14; index--)
{
format_str[index] = (byte)(48 + (temp - temp / 10 * 10));
temp /= 10;
}
format_str[16] = (byte)':';
index = 18;
temp = second;
for (; index >= 17; index--)
{
format_str[index] = (byte)(48 + (temp - temp / 10 * 10));
temp /= 10;
}
return Encoding.Default.GetString(format_str);
}