.net将bytearray转换为double []

时间:2010-04-09 11:52:29

标签: .net

我正在使用遗留应用程序中的数据库,该应用程序将24个浮点值(双精度数)存储为长度为192的字节数组,因此每个值为8个字节。此字节数组存储在SQL Server 2005数据库中image类型的列中。

在我的.net应用程序中,我需要读取此字节数组并将其转换为类型Double[24]的数组。我可以轻松访问该字段reader.GetBytes(...),但如何将返回的ByteArray转换为Double[24]

有什么想法吗?

谢谢,

AJ

2 个答案:

答案 0 :(得分:4)

那么,每组8个字节是如何表示的?您可以能够使用Buffer.BlockCopy

double[] doubles = new double[bytes.Length / 8];
Buffer.BlockCopy(bytes, 0, doubles, 0, bytes.Length);

或者您可能需要反复使用BitConverter.ToDouble - 或某些自定义转换方法。

答案 1 :(得分:0)

蛮力:

double[] doubles = new double[24];   

for (int i=0; i < 24; i++)
{
    for (int j=0; j < 8; j++)
    {
        doubles[i] += bytes[i*8 + j] << j*8;
    }
}

如果字节顺序错误,请将最后一项从j * 8更改为(7-j)* 8;