TA的每日心情 | 开心 2015-3-11 15:26 |
---|
签到天数: 307 天 [LV.8]以坛为家I
|
楼主 |
发表于 2012-9-24 17:51:10
|
显示全部楼层
分享一个我用c#写的ibm2float:
public double IBMToFloat(byte[] buf, int size)
{
//低位在前,高位在后,交换字节顺序得到正确的数
//如果4字节,Step1:读取一个32位的数据;Step2:互换该数据的第一个字节和第四个字节,
//互换该数据的第二个字节和第三个字节。这时得到的数据才是确切的数据。
byte temp;
double value,y=0;
switch(size)
{
case 2:
temp = buf[0]; buf[0] = buf[1]; buf[1] = temp;
Int16 x =BitConverter.ToInt16(buf,0);
y = (double)x;
break;
case 4:
temp = buf[0]; buf[0] = buf[3]; buf[3] = temp;
temp = buf[1]; buf[1] = buf[2]; buf[2] = temp;
float m = BitConverter.ToSingle(buf,0);
y = (double)m;
break;
case 8:
temp = buf[0]; buf[0] = buf[7]; buf[7] = temp;
temp = buf[1]; buf[1] = buf[6]; buf[6] = temp;
temp = buf[2]; buf[2] = buf[5]; buf[5] = temp;
temp = buf[3]; buf[3] = buf[4]; buf[4] = temp;
y = BitConverter.ToDouble(buf,0);
break;
default:
break;
}
value = y;
return value;
} |
|