C# 獲取時間戳並從10進位制時間戳轉換成16進位制byte陣列

zmxyzmxy1234發表於2021-03-25

C#獲取當前時間戳

  1. 獲取當前的毫秒時間戳
    /// <summary>
    /// 獲取當前的毫秒時間戳
    /// </summary>
    /// <returns></returns>
    public static long Timestamp()
    {
     long ts = ConvertDateTimeToInt(DateTime.Now);
     return ts;
    }
    /// <summary>  
    /// 將c# DateTime時間格式轉換為Unix時間戳格式  
    /// </summary>  
    /// <param name="time">時間</param>  
    /// <returns>long</returns>  
    public static long ConvertDateTimeToInt(System.DateTime time)
    {
     //System.DateTime startTime = TimeZone.CurrentTimeZone.ToLocalTime(new System.DateTime(1970, 1, 1, 0, 0, 0, 0));
     //long t = (time.Ticks - startTime.Ticks) / 10000;   //除10000調整為13位      
     long t = (time.Ticks - 621356256000000000) / 10000;
     return t;
    }

時間戳轉換16進位制byte陣列

  1. 首先將時間戳轉換16進位制字串
    // 獲取時間戳
    long timeStamp = Public.Timestamp() / 1000;// 精確到秒
    string str = timeStamp.ToString("X4"); // 10進位制轉換16進位制,並且少於4位補全0
  2. 16進位制時間戳字串轉換成16進位制byte陣列
    /// <summary>
    /// 16進位制字串轉換成16進位制byte陣列
    /// </summary>
    /// <param name="hexString"></param>
    /// <returns></returns>
    public static byte[] strToHexByte(string hexString)
    {
         hexString = hexString.Replace(":", "");
         if ((hexString.Length % 2) != 0)
         hexString += " ";
         byte[] returnBytes = new byte[hexString.Length / 2];
         for (int i = 0; i < returnBytes.Length; i++)
         returnBytes[i] = Convert.ToByte(hexString.Substring(i * 2, 2), 16);
         return returnBytes;
    }

最後使用

// 獲取時間戳
long timeStamp = Public.Timestamp() / 1000; // 精確到秒
string str = timeStamp.ToString("X4"); // 10進位制轉換16進位制,並且少於4位補全0
byte[] b = Public.strToHexByte(str);
本作品採用《CC 協議》,轉載必須註明作者和本文連結

相關文章