以下是乱码,
socket中用16进制发送时间,正确方式是怎样呢?
byte[] data = new byte[4];
long ts = (uint)(DateTime.Now.Ticks / 10000);
System.Array.Copy(System.BitConverter.GetBytes(ts), 0, data, 0, sizeof(uint));
socketTCP.SendData(data);
以下是乱码,
socket中用16进制发送时间,正确方式是怎样呢?
byte[] data = new byte[4];
long ts = (uint)(DateTime.Now.Ticks / 10000);
System.Array.Copy(System.BitConverter.GetBytes(ts), 0, data, 0, sizeof(uint));
socketTCP.SendData(data);
/// <summary>
/// 把一个时间转化成四个字节的16进制字符串
/// </summary>
/// <param name="time">要转化的时间</param>
/// <returns></returns>
public static String TimeToHex(DateTime time)
{
StringBuilder sb = new StringBuilder();
DateTime timeStar = TimeZone.CurrentTimeZone.ToLocalTime(new DateTime (1970,01,01));
TimeSpan timeSpan= time - timeStar;
uint unitSpan= Convert.ToUInt32(timeSpan.TotalSeconds);
if (unitSpan<0)
{
return sb.ToString();
}
byte[] bytes = System.BitConverter.GetBytes(unitSpan);
for (int i = bytes.Length-1; i >= 0; i--)
{
sb.Append(bytes[i].ToString("X2"));
}
return sb.ToString();
}