如何将nodejs writeDoubleBE缓冲区转换为c#double?

时间:2016-03-31 15:00:10

标签: c# node.js buffer

我有writeDoubleBE的nodejs Buffer。如何在收到字节数组时将其转换为C#加倍?

nodejs代码如下:

var b1 = new Buffer(8);
b1.writeDoubleBE(123.123456789,0);

现在b1中的c#相当于什么?

1 个答案:

答案 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()
}