问:有4个字节,如何判断所转化的值类型是Float还是Int32?
请问该如何判断4个字节所应该转换的类型
我觉得应该从Float的在内存中的储存方式入手...
请教。。。
谢谢
问题点数:88、回复次数:14Top
1 楼NewBo(^_^)回复于 2005-08-01 17:40:23 得分 0
同意楼主思路,但是主要还是实现,试试先!!Top
2 楼shrinerain(圣影雨)回复于 2005-08-01 17:45:50 得分 11
GetType()Top
3 楼zealic()回复于 2005-08-01 17:48:31 得分 0
楼上看清题目
只有4个字节给你,纯粹的byte[4]
而不是给你一个未知变量Top
4 楼tslkfyh(TSL)回复于 2005-08-01 17:51:37 得分 22
int i=12;
float j=12.00F;
byte [] ibyte=BitConverter.GetBytes(i);
byte [] jbyte=BitConverter.GetBytes(j);
foreach(byte temp in ibyte)
{
MessageBox.Show(temp.ToString());
}
MessageBox.Show("ibyte over");
foreach(byte temp in jbyte)
{
MessageBox.Show(temp.ToString());
}
打印出来的布局是:12 0 0 0 ibyteover 0 0 65 64
Top
5 楼zealic()回复于 2005-08-01 17:52:22 得分 0
条件可以扩充
变成 4*n 个字节
且类型必定为 Int32 或 Float
而且类型相同
如何判断Top
6 楼zealic()回复于 2005-08-01 17:55:49 得分 0
感谢tslkfyh(TSL)所做的测试
貌似Int32和Float的布局是一个从高位开始保存,一个从低位开始保存
有待测试Top
7 楼Jim3(Jim)回复于 2005-08-01 18:00:44 得分 11
好像没办法,除非有附加条件,比如大小范围等条件
ieee 浮点数的存放格式
http://www.pediy.com/bbshtml/BBS3/Forum669.htm
Top
8 楼YYKXQ(异域狂想曲)回复于 2005-08-01 18:02:23 得分 11
你要判断的变量为temp;
if(temp is Int32)
Console.WriteLine("Int");
if(temp is float)
Console.WriteLine("float");Top
9 楼tslkfyh(TSL)回复于 2005-08-01 18:10:28 得分 0
Jim3(Jim)说得有些道理哦!
float 关键字表示存储 32 位浮点值的简单类型
都是四个字节表示,都可以相互转换,上面的也可以相互转换,只是大小不一样而已Top
10 楼tslkfyh(TSL)回复于 2005-08-01 18:30:29 得分 0
刷新N遍,怎么还没高手来指示一下呢,顶一下吧Top
11 楼skyfarwolf(Computer)回复于 2005-08-01 19:01:42 得分 11
upTop
12 楼Sunmast(速马@Redmond, WA)回复于 2005-08-01 19:21:05 得分 11
不能区别
最多判断是不是合法的浮点数Top
13 楼Jim3(Jim)回复于 2005-08-02 11:09:48 得分 0
如果你的整数小于7fffff,而浮点数不会非常小,比如2的-127次方
那么就可以用浮点数的23-30位是否为零进行判断,如果不为零就是浮点数,否则就是
整数
(上面只是一个思路,不够准确,仅供参考)Top
14 楼Jamestan(情商蛋蛋)回复于 2005-08-02 11:21:06 得分 11
个人觉得应该没办法区分的。
计算机存储的东西,一定要原始存储的才知道作用吧?就好像存几个字节的东西,如果作为程序,就是指令集,如果作为数据,就是几个字节的资料,在没有辅助描述(文件类型)的情况下,也没有办法判别吧?至少没有一个通用的工具或者方法能准确判别的。
Top




