c# 中的不同类型间的转化

转载 2011年01月14日 16:28:00

在做通信编程的时候,数据发送多采用串行发送方法,实际处理的时候多是以字节为单位进行处理的。在C/C++中 多字节变量与Byte进行转化时候比较方便 采用UNION即可
废话少说看示例:

typedef union
{
double data_df;
byte     data_b[8];
}DoubleYByte;
本示例实现了double与byte的相互转化
typedef union
{
float data_f;
byte data_b;
}FloatYByte;
本示例实现了float与byte的相互转化
其他的数据类型short int long等都可以采用上述示例转换 在C/C++中可以很容易的实现

但是在上位机编程中,采用C#编程就比较麻烦,因为没有union可用
但是C#提供一个类system.BitConverter来专门解决这种转换问题,该类如下显示
方法
DoubleToInt64Bits    将指定的双精度浮点数转换为 64 位有符号整数。
GetBytes    已重载。 将指定的数据转换为字节数组。
Int64BitsToDouble    将指定的 64 位有符号整数转换成双精度浮点数。
ToBoolean    返回由字节数组中指定位置的一个字节转换来的布尔值。
ToChar    返回由字节数组中指定位置的两个字节转换来的 Unicode 字符。
ToDouble    返回由字节数组中指定位置的八个字节转换来的双精度浮点数。
ToInt16    返回由字节数组中指定位置的两个字节转换来的 16 位有符号整数。
ToInt32    返回由字节数组中指定位置的四个字节转换来的 32 位有符号整数。
ToInt64    返回由字节数组中指定位置的八个字节转换来的 64 位有符号整数。
ToSingle    返回由字节数组中指定位置的四个字节转换来的单精度浮点数。
ToString    已重载。 将指定的字节数组的每个元素的数值转换为它的等效十六进制字符串表示形式。
ToUInt16    返回由字节数组中指定位置的两个字节转换来的 16 位无符号整数。
ToUInt32    返回由字节数组中指定位置的四个字节转换来的 32 位无符号整数。
ToUInt64    返回由字节数组中指定位置的八个字节转换来的 64 位无符号整数。
若想把float类型转化为byte示例如下:
float a=1.23;
byte[] b=BitConverter.GetBytes(a);
若想把变量b重新转化为float类型可以使用toSingle方法,示例如下:
float c=BitConverter.ToSingle(b,0);//应为a在b中其实字节为0,故第二个参数为0

还有就是string与byte[]的变换 如果知道就很简单
     byte[] byteArray = System.Text.Encoding.Default.GetBytes(  str  );
     string str = System.Text.Encoding.Default.GetString( byteArray );
在System.Text.Encoding class中,还有很多其它有用的方法,像GetChars,从一个byte[]转成一个char[],等等,还有其它编码方式的,如System.Text.UTF8Encoding class、System.Text.UnicodeEncoding class等,根据不同需要可选不同的class。 具体请参考MSDN

各位大侠,看完之后应该对通信编程中数据类型转化问题应该不会头痛了吧 

 

转自:http://hi.baidu.com/%C2%E4%C0%D7%BF%F1%C8%CB/blog/item/38397c1339e7ee105aaf53f8.html

总结C#中窗体间传递数据的几种方法 (由别人的方法整理)

总结C#中窗体间传递数据的几种方法 (由别人的方法整理)   在编写C#windows应用程序的时候我们经常会遇到这种问题,怎么样在两个窗体间传递数据呢?以下是我整理的网上的各种方法,在遇到一个实际问...
  • Daisy423XU
  • Daisy423XU
  • 2007年04月24日 14:55
  • 7128

不同进制间的相互转换的理解

不同进制间的相互转换一般有两种方法,第一种是直接先确定最高位,然后逐步确定低位的数字;第二种便是先确定最低位然后在然后逐步确定到最高位下面便是对这两种方法的具体解析 本文以二进制和十进制的相互转换来说...
  • LookAtTheStars
  • LookAtTheStars
  • 2016年05月02日 20:20
  • 626

不同数据类型的相互转换

不同数据类型的相互转换 首相强调一下那个关于各类型数值的长度以及取值范围的表格十分重要,必须附上:类型 关键字 长度(位) ...
  • LingXi__Y
  • LingXi__Y
  • 2016年07月28日 12:47
  • 1836

C++中不同数据类型之间的相互转换

双精度浮点型,整型,浮点型 字符串 字符串浮点型,整型,长整形,无符号长真型 将整型数目转化为asc编码 atof(将字符串转换成浮点型数): 表头文件 #include 定义函数 dou...
  • xlz669112
  • xlz669112
  • 2017年03月17日 11:34
  • 140

C# 实现控件在不同窗体之间的引用

.NETFAMEWORK2.0中要实现在不同窗体中引用控件变的非常的容易:Application.OpenForms["Form1"]  //用来引用窗体。Application.OpenForms[...
  • baihe_591
  • baihe_591
  • 2008年05月08日 20:59
  • 803

c# 用委托和事件实现不同窗体间的通讯(一)

 C# 中的“事件”是当对象满足一定条件,发生某些事情时,类向该类的客户提供通知的一种方法。使用事件,拥有该事件的对象不必知道需要通知谁,一旦满足了某个条件,将自动调用该事件,正确通知每个需要通知的对...
  • lekelaier_msn
  • lekelaier_msn
  • 2007年06月24日 13:38
  • 4041

C#控制台基础 out类型的意义,函数需要返回不同类型的值

慈心积善融学习,技术愿为有情学。善心速造多好事,前人栽树后乘凉。我今于此写经验,愿见文者得启发。 using System; using System.Collections.Gener...
  • yushaopu
  • yushaopu
  • 2016年09月02日 22:56
  • 663

不同数据间的转化

#include using namespace std; int  main( {  //把十六进制的数据转换成十六进制格式的字符串  char addrData[4]={0x12,0x84,0x...
  • woshizfs
  • woshizfs
  • 2013年12月19日 08:58
  • 427

.C#的统一类型系统

 一.C#的统一类型系统1.C#的类型系统是统一的,java的类型系统分为:基本类型(原生类型)和类类型,而C#的所有类型直接或间接地从object类类型派生而来,从类型系统上来看比java更OO。2...
  • airweilai
  • airweilai
  • 2008年07月26日 16:52
  • 352

数据分析告诉你,转化才是王道

无论是网站还是app,引流之后通过一系列优化,引导用户转化才是最终目的。对于转化率低的问题,本文将着重带大家分析转化的各个环节,分析异常或不合理的原因并提出一些优化策略,以提升各环节的转化率。转化 ...
  • corrine_lei
  • corrine_lei
  • 2016年09月23日 20:22
  • 229
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:c# 中的不同类型间的转化
举报原因:
原因补充:

(最多只允许输入30个字)