最近在项目中遇到一个与PC位宽有关的问题:


用C#做了一个软件,处理数据,在xp、win7(都是32位的)下运行一切正常;但是在64为的win7下运行,则会出错,代码如下:

   
  public const float const_times= 18.02f;
  
private const float standardtimes = 1000.0f;//主机指血值放大倍数
private const float bsvaluetimes = 1000.0f;//主机血糖值放大倍数
//Decode()返回int型数据
record.iValue = (float)Decode(bBuffer, curPos, 5, 2) / 10.00f;
record.uValue = (double)Decode(bBuffer, curPos, 7, 2) / 1000.00f;
record.activity = Decode(bBuffer, curPos, 9, 1);
record.standard = (float)Decode(bBuffer, curPos, 10, 2) * const_times /standardtimes;

record.iValue、record.uvalue均正常,但是record.standard被放大了100倍

请输入图片描述

c# windows

Eidolem 11 years, 7 months ago

System.IntPtr 通过这个可以判断操作系统的位数 4就是32位 8就是64位
64位系统的 int 还有 float 都与 32位的不同
关注下 decode 这个函数。

Agerter answered 11 years, 7 months ago

Your Answer