C# 获取时间戳并从10进制时间戳转换成16进制byte数组
C#获取当前时间戳
- 获取当前的毫秒时间戳
/// <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数组
- 首先将时间戳转换16进制字符串
// 获取时间戳 long timeStamp = Public.Timestamp() / 1000;// 精确到秒 string str = timeStamp.ToString("X4"); // 10进制转换16进制,并且少于4位补全0
- 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 协议》,转载必须注明作者和本文链接