已知文件的第37字节开始,一共8个字节存储了一个 double 类型的数据,如何读出?
我已经读出8个字节,但不知道如何转换为 double 类型数据。代码如下:System.IO.FileStream fStream = new FileStream(filename, FileMode.Open, FileAccess.Read);
fStream.Position = 36; byte[] bytes = new byte[8];
fStream.Read(bytes,0, 8);double v1 = Convert.ToDouble(bytes);
我已经读出8个字节,但不知道如何转换为 double 类型数据。代码如下:System.IO.FileStream fStream = new FileStream(filename, FileMode.Open, FileAccess.Read);
fStream.Position = 36; byte[] bytes = new byte[8];
fStream.Read(bytes,0, 8);double v1 = Convert.ToDouble(bytes);
解决方案 »
- datalist 嵌套问题。。老是不显示!急啊~~~
- datagridview单元格回车换行
- 并发冲突: UpdateCommand 影响 0 个记录
- 分别求出如下数据并按小到大排列(正则)
- 急问:图书馆里系统开发
- 关于DropDownList的SelectedIndexChange事件!在线等。恳请各位帮忙!
- 请问如何得到客户端的ip地址??
- C#{public bool checked{get;set;}} 关键字做属性名 怎么解决,求大神
- c#在NPOI.SS.UserModel.workbook.Write(fileStream);未将对象引用设置到对象的实例
- VS.Net 2003(使用C#) 加入新窗体的问题
- [提问]请问如何在windowsform中插入excel表格?
- 各位哥,救救我啊,我搞了好久,还是没有进展?一个BeginInvoke问题,在线等
for(int i=0; i<8; i++)
{
s += bytes[i];
}double d = double.Parse(s);顺便说一下,如果不是一定得把数据存储得那么别扭的话,改变一下文件存储方式吧,那样处理起来也简单明了一些
你的答案是错误的!8个字节内容(从高位到地位依次16进制):41 1F 85 AE 5B 16 EE 50
它代表的是浮点值:516459.588954662而用你的方式得到的是:8.0238229117413335E+18以下是使用C++方式解决:double x;
char *f = (char *) &x;
f[0] = 0x41;
f[1] = 0x1F;
...
f[7] = 0x50;这时,x已经为516459.588954662
另外,这个文件是其它商业公司应用广泛的地图文件: ESRI公司的 .shp 文件。我需要不使用它们的API,直接从文件中读取部分信息。
1、用C++创建一个动态连接库,由C#调用,这样可以使用上面的方式获取到浮点值(已试验成功)。2、找到了C#中的转换类 System.BitConverter
byte[] t;
..
double v = System.BitConverter.ToDouble(t);方法2是其他人告诉我的。否则,我就会使用方法1了!
char *f = (char *) &x;
f[0] = 0x50;
f[1] = 0xEE;
...
f[7] = 0x41;
double v = System.BitConverter.ToDouble(t, 0);