OctetString 转String

复制代码
     /// <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);
        }
复制代码

 

posted @   simadi  阅读(3613)  评论(0编辑  收藏  举报
编辑推荐:
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
阅读排行:
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 上周热点回顾(2.24-3.2)
点击右上角即可分享
微信分享提示