Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/solr/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 将字节[]转换为双字节_C# - Fatal编程技术网

C# 将字节[]转换为双字节

C# 将字节[]转换为双字节,c#,C#,我有一个字节[8],它实际上是一个序列号。它来自数据库中的行版本 我只关心8字节数组的最后4个字节 我正在尝试这样做: Version = BitConverter.ToDouble(t.Version,4) “Version”是双精度的。但是,我得到一个错误,说: 目标数组不够长,无法复制该数组中的所有项 收集检查数组索引和长度 我的“版本”的价值是: [0]0[1]0[2]0[3]0[4]0[5]0[6]12[7]102 我做错了什么?使用以下代码: double[] array= by

我有一个字节[8],它实际上是一个序列号。它来自数据库中的行版本

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

我正在尝试这样做:

 Version = BitConverter.ToDouble(t.Version,4)
“Version”是双精度的。但是,我得到一个错误,说:

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

我的“版本”的价值是:

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

我做错了什么?

使用以下代码:

double[] array= bytearray.Select(i => (double)i).ToArray();
更新:

BitConverter.ToDouble(yournumber, 0);
,因此您应该只从整个
字节[]中获取一个:

BitConverter.ToDouble(input, 0);
返回

3.7179659497173697E+183
7353252291589177344
更新

但因为您说它是一个
rowversion
值,所以应该将其转换为
long
,而不是
double

BitConverter.ToInt64(input, 0);
返回

3.7179659497173697E+183
7353252291589177344

我不认为这是OPs想要的。是的,我正在尝试将字节[]转换成一个数字,这样我可以对它进行排序,前4个字节从未使用过——或者不会使用,因为达到该大小的记录数有点大。所以,我只关心第一个(最后一个?)4字节。然后我想把字节[4]转换成一个数字。我认为8字节数组对于int来说太大了,甚至对于double来说。因此,我首先尝试减小字节大小,然后转换.double是8个字节,也许你想要
float
insteadFrom-“ToDouble方法将字节从索引startIndex转换为startIndex+7,转换为一个双倍值,”4+7大于初始数组的大小。这是我最初尝试的,Marcin,但我注意到,当我按这个数字排序时,它给出了奇怪的结果。我假设“+183”位是问题所在,并且该数字太大而无法排序?它是
rowversion
,因此您应该使用
Int64
(vel.
long
)而不是
double