在做通信编程的时候,数据发送多采用串行发送方法,实际处理的时候多是以字节为单位进行处理的。在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

C# double float int string 与 byte数组 相互转化的更多相关文章

  1. c# string 和 byte[]数组之间转换

    在文件流读取和存储过程当中,经常涉及到byte[]数组形式存储数据,再此过程中也涉及到String类型字符串和byte[]的类型转换,下面我们举例说明一下. 现在有一个字符串: string str ...

  2. C++ char float int string 之间的转换

    string str = "123"; string 转 int int i = atoi( str.c_str() ); string 转 float float f = ato ...

  3. C# String与Byte数组的转换

    string转byte[]: byte[] byteArray = System.Text.Encoding.Default.GetBytes(str); byte[] byteArray = Enc ...

  4. 对象与Byte数组相互转化工具方法

    /** * 对象转byte * @param obj * @return */ private byte[] ObjectToByte(Object obj) { byte[] bytes = nul ...

  5. byte数组和int之间相互转化的方法

    Java中byte数组和int类型的转换,在网络编程中这个算法是最基本的算法,我们都知道,在socket传输中,发送者接收的数据都是byte数组,但是int类型是4个byte组成的,如何把一个整形in ...

  6. 【转】java中byte数组与int类型的转换(两种方式)----不错

    原文网址:http://blog.csdn.net/piaojun_pj/article/details/5903009 java中byte数组与int类型的转换,在网络编程中这个算法是最基本的算法, ...

  7. byte[]数组和int之间的转换

    这里简单记录下两种转换方式: 第一种: 1.int与byte[]之间的转换(类似的byte short,long型) /** * 将int数值转换为占四个字节的byte数组,本方法适用于(低位在前,高 ...

  8. Go语言网络通信---string与int互转,int64与[]byte互转,int直接互转,string与[]byte互转

    string与int互转 #string到int int,err:=strconv.Atoi(string) #string到int64 int64, err := strconv.ParseInt( ...

  9. java基本数据类型转换成byte[]数组

    import java.io.UnsupportedEncodingException;  public class ConToByte {      /**     * double转换byte   ...

随机推荐

  1. ios开发——实战OC篇&FMDB详解

    FMDB详解 前一篇文章中我们介绍的SQLite的使用,在iOS中原生的SQLite API在使用上相当不友好. 于是,就出现了一系列将SQLite API进行封装的库,例如FMDB.Plausibl ...

  2. java推断字符串是否为乱码

    项目中有一个功能 在IE中GET方式提交会产生乱码 但有两个入口都会走这同一段代码 固不能直接转码,所以要进行推断传过来的该值是不是乱码 可用下面方式验证: java.nio.charset.Char ...

  3. [Effective C++ --016]成对使用New和Delete时要采用相同形式

    这一节比较简单,可以总结为以下: std::string *stringPtr1 = new std::string; std::]; .. delete stringPtr1; // delete ...

  4. 标准I/O库之缓冲

    标准I/O库提供缓冲的目的是尽可能减少使用read和write调用的次数.它也对每个I/O流自动地进行缓冲管理,从而避免了应用程序需要考虑这一点所带来的麻烦. 标准I/O提供了三种类型的缓冲: (1) ...

  5. opencv中的基本拼接

    普通版的图像拼接,事实上非常简单并且效果不很差. 实现方式: 新建工程: 去opencv里面[f:\opencv249\opencv\sources\samples\cpp]把stitching.cp ...

  6. SQL中N $ # @的作用

    declare @sql nvarchar(4000) set @sql= N'select @TotalRecords=count(*) from ' + N'(' + @sqlFullPopula ...

  7. JavaScript高级程序设计(第三版)学习笔记13、14章

    第13章,事件 事件冒泡 IE的事件叫做事件冒泡:由具体到不具体 <!DOCTYPE html> <html> <head>      <title>E ...

  8. JAXB - Annotations, The Annotation XmlElement

    The basic annotation for a field that's intended to be an element is XmlElement. It permits you to d ...

  9. Spring AOP (Spring 3.x 企业应用开发实战读书笔记第六章)

    从面相对象编程到面相切面编程,是一种代码组织方式的进化. 每一代的代码组织方式,其实是为了解决当时面对的问题.比如写编译器和写操作系统的时候的年代当然要pop,比如写界面的时候当然要oop,因为界面这 ...

  10. Meteor:用户账号管理添加密码和微博weibo账号系统支持

    Meteor账户系统构建与accounts-base包之上,并为publish和methods提供userId的顶层支持.核心包提供的功能有:数据库中的用户记录支持:额外的包提供密码安全验证:第三方登 ...