我有一个服务器服务,moniters并保持一堆c#客户端应用程序更新。我的一些数据包将日期发送给客户端。最新尝试使一些客户端更好(因为他们都有可以使用websockets的Web浏览器。但是c#代码有时会出现问题)我想我可以将相同的数据包发送到javascript并解析出我需要的东西。
我宁愿不更改现有数据包,也不打算创建另一个带有不同数据的字节[]发送到网络。无论如何从那8个字节中提取日期时间?
显而易见的问题是javascript中没有真正的长篇。 因此,重构long的c#方式不起作用
; javascript code to convert 8 bytes into a long
; shifting the number over 32 bits doesnt work as it goes into javascripts special place.
var num = ((arr[0 + offset] | (arr[1 + offset] << 8)) | (arr[2 + offset] << 0x10)) | (arr[3 + offset] << 0x18);
var num2 = ((arr[4 + offset] | (arr[5 + offset] << 8)) | (arr[6 + offset] << 0x10)) | (arr[7 + offset] << 0x18);
return num | (num2 << 0x20);
有没有办法将long转换为javascript日期时间?
; C # code
; Time | 3/28/2018 5:40:07 PM
; actual bytes = [28, 107, 42, 75, 215, 148, 213, 8]
var bytes = BitConverter.GetBytes(DateTime.Now.Ticks);
; go through web socket to javascript
var received_Uint8Array = socket.receive();
; how to create date from 8 bytes
答案 0 :(得分:0)
你应该再次使用BitConverter
var ticks = BitConverter.ToInt64(received_Uint8Array);
var dateTime = new DateTime(ticks);
但正如 Camilo Terevinto 所提到的,C#拥有广泛的实现系统