我正在尝试从文件中加载一些十进制值,但我无法找出获取原始值并将其转换为小数的正确方法。
我已将文件读入字节数组,每个四个字节块应该代表一个十进制值。为了帮助解决这个问题,我构建了一个表格,其中说明十进制值 1 到 46 如何表示为四个字节块。
例如,数字 1 显示为 0,0,128,63,数字 2 显示为 0,0,0,64,依此类推,直到 46,即 0,0,56,66。完整的表格可以在这里找到。
还有另一组数字,精确到小数点后三位并包含负数,如下所示。
我拥有的唯一文档说明
它们首先存储最低有效字节:1、256、65536、16777216。这使得十六进制序列 01 01 00 00 变成数字 257(十进制)。在 C/C++ 中,要读取浮点数,请执行:float x; fread(&x, sizeof(float), 1, fileptr);
不过,我正在使用 .NET 的 File.ReadAllBytes 方法,因此这没有太大帮助。如果有人能抽出几分钟时间查看示例文件,看看他们是否能找到将值转换为小数的方法,我将不胜感激。
您可以使用BitConverter.ToSingle从字节数组中读取浮点值,因此要获取浮点序列,您可以执行以下操作:
byte[] data = File.ReadAllBytes(fileName);
int count = data.Length / 4;
Debug.Assert(data.Length % 4 == 0);
IEnumerable<float> values = Enumerable.Range(0, count)
.Select(i => BitConverter.ToSingle(data, i*4));
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
26847 次 |
| 最近记录: |