我正在使用遗留应用程序中的数据库,该应用程序将24个浮点值(双精度数)存储为长度为192的字节数组,因此每个值为8个字节。此字节数组存储在SQL Server 2005数据库中image
类型的列中。
在我的.net应用程序中,我需要读取此字节数组并将其转换为类型Double[24]
的数组。我可以轻松访问该字段reader.GetBytes(...)
,但如何将返回的ByteArray
转换为Double[24]
有什么想法吗?
谢谢,
AJ
答案 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;