问:有4个字节,如何判断所转化的值类型是Float还是Int32?

zealic 2005-08-01 05:36:22
请问该如何判断4个字节所应该转换的类型

我觉得应该从Float的在内存中的储存方式入手...

请教。。。
谢谢
...全文
250 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
Jamestan 2005-08-02
  • 打赏
  • 举报
回复
个人觉得应该没办法区分的。

计算机存储的东西,一定要原始存储的才知道作用吧?就好像存几个字节的东西,如果作为程序,就是指令集,如果作为数据,就是几个字节的资料,在没有辅助描述(文件类型)的情况下,也没有办法判别吧?至少没有一个通用的工具或者方法能准确判别的。
Jim3 2005-08-02
  • 打赏
  • 举报
回复
如果你的整数小于7fffff,而浮点数不会非常小,比如2的-127次方

那么就可以用浮点数的23-30位是否为零进行判断,如果不为零就是浮点数,否则就是
整数

(上面只是一个思路,不够准确,仅供参考)
速马 2005-08-01
  • 打赏
  • 举报
回复
不能区别
最多判断是不是合法的浮点数
skyfarwolf 2005-08-01
  • 打赏
  • 举报
回复
up
tslkfyh 2005-08-01
  • 打赏
  • 举报
回复
刷新N遍,怎么还没高手来指示一下呢,顶一下吧
tslkfyh 2005-08-01
  • 打赏
  • 举报
回复
Jim3(Jim)说得有些道理哦!
float 关键字表示存储 32 位浮点值的简单类型
都是四个字节表示,都可以相互转换,上面的也可以相互转换,只是大小不一样而已
YYKXQ 2005-08-01
  • 打赏
  • 举报
回复
你要判断的变量为temp;

if(temp is Int32)
Console.WriteLine("Int");
if(temp is float)
Console.WriteLine("float");
Jim3 2005-08-01
  • 打赏
  • 举报
回复
好像没办法,除非有附加条件,比如大小范围等条件

ieee 浮点数的存放格式
http://www.pediy.com/bbshtml/BBS3/Forum669.htm

zealic 2005-08-01
  • 打赏
  • 举报
回复
感谢tslkfyh(TSL)所做的测试
貌似Int32和Float的布局是一个从高位开始保存,一个从低位开始保存

有待测试
zealic 2005-08-01
  • 打赏
  • 举报
回复
条件可以扩充

变成 4*n 个字节

且类型必定为 Int32 或 Float

而且类型相同

如何判断
tslkfyh 2005-08-01
  • 打赏
  • 举报
回复
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
zealic 2005-08-01
  • 打赏
  • 举报
回复
楼上看清题目
只有4个字节给你,纯粹的byte[4]
而不是给你一个未知变量
shrinerain 2005-08-01
  • 打赏
  • 举报
回复
GetType()
NewBo 2005-08-01
  • 打赏
  • 举报
回复
同意楼主思路,但是主要还是实现,试试先!!

110,534

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧