将Byte []转换为Double

Cra*_*aig 3 c#

我有一个字节[8],实际上是一个序号.它来自数据库中的RowVersion.

我真的只关心8字节数组的最后4个字节.

我想这样做:

 Version = BitConverter.ToDouble(t.Version,4)
Run Code Online (Sandbox Code Playgroud)

'版本'是双倍的.但是,我得到一个错误说:

目标数组不够长,无法复制集合中的所有项目.检查数组索引和长度.

我的'版本'的价值是:

[0] 0 [1] 0 [2] 0 [3] 0 [4] 0 [5] 0 [6] 12 [7] 102

我究竟做错了什么?

Mar*_*zek 5

double需要8个字节,所以你应该只从你的整个中获得一个byte[]:

BitConverter.ToDouble(input, 0);
Run Code Online (Sandbox Code Playgroud)

回报

3.7179659497173697E+183
Run Code Online (Sandbox Code Playgroud)

更新

但是因为你说它是一个rowversion值,你应该将它转换为long而不是double:

BitConverter.ToInt64(input, 0);
Run Code Online (Sandbox Code Playgroud)

回报

7353252291589177344
Run Code Online (Sandbox Code Playgroud)