CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
可用分押宝游戏火热进行中... 专题改版:Java Web 专题
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  .NET技术 >  C#

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

楼主zealic()2005-08-01 17:36:22 在 .NET技术 / C# 提问

请问该如何判断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

相关问题

  • 四字节的数组转化为float的问题
  • float类型转化成int 类型
  • 高分求解!菜鸟级的问题“怎样将BYTE *pIn所指的字节流转化为int Array[]中去??
  • 用什么函数能把 "单字节" 的汉字转化正 "双字节"
  • int 如何转换成指定格式的COLOR16 (0x??00,前面两个字节为对应转化的int,后面必须为00)急!!!
  • float转化为byte
  • 简单问题!如何将一个Float型转化成Int型??
  • 如何将String类型转化成int 和float类型
  • 如何将float的类型转化为int
  • 怎样将字符串"9BF"转化为0x09bf(两字节)

关键词

  • 转换
  • 判断
  • 类型
  • float
  • ibyte
  • 浮点数
  • 存储
  • temp
  • 办法
  • messagebox

得分解答快速导航

  • 帖主:zealic
  • shrinerain
  • tslkfyh
  • Jim3
  • YYKXQ
  • skyfarwolf
  • Sunmast
  • Jamestan

相关链接

  • CSDN .NET频道
  • .NET类图书
  • C#类图书
  • .NET类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
世纪乐知(北京)网络技术有限公司 版权所有, 京 ICP 证 020026 号
北京创新乐知广告有限公司 提供技术支持
Copyright © 2000-2007, CSDN.NET, All Rights Reserved
GongshangLogo