我有writeDoubleBE
的nodejs Buffer。如何在收到字节数组时将其转换为C#
加倍?
nodejs代码如下:
var b1 = new Buffer(8);
b1.writeDoubleBE(123.123456789,0);
现在b1
中的c#
相当于什么?
答案 0 :(得分:0)
所有windows x64 / x86都是小端系统,所以在你进入C#字节数组后,你应该反转你的大端字节顺序:
double b1 = BitConverter.ToDouble(bytes.Reverse().ToArray(), 0);
如果您在其他地方Mono
上运行,可以使用BitConverter.IsLittleEndian
检查是否需要反转数组。
等效的双序列化器将是:
double x = 1.1;
byte[] bytes = BitConverter.GetBytes(x);
if (BitConverter.IsLittleEndian)
{
// on windows `IsLittleEndian` would be always true
bytes = bytes.Reverse().ToArray()
}