float型数据与字节数组的转化

字节(float)浮点数为例。

一、C语言

转化常见的方法有:

1、强制指针类型转换。

[html] view
plain
 copy

  1. //转换float数据到字节数组
  2. unsigned char i;
  3. float floatVariable;
  4. unsigned char charArray[4];
  5. (unsigned char) *pdata = ((unsigned char)*)&floatVariable;  //把float类型的指针强制转换为unsigned char型
  6. for(i=0;i<4;i++)
  7. {
  8. charArray[i] = *pdata++;//把相应地址中的数据保存到unsigned char数组中
  9. }
  10. //转换字节数组到float数据
  11. float   floatVariable;
  12. unsigned char  i;
  13. void   *pf;
  14. pf = &floatVariable;
  15. (unsigned char) * px = charArray;
  16. for(i=0;i<4;i++)
  17. {
  18. *(((unsigned char)*)pf+i)=*(px+i);
  19. }

、使用结构和联合

[html] view
plain
 copy

  1. //定义结构和联合
  2. typedef union
  3. {
  4. struct
  5. {
  6. unsigned char low_byte;
  7. unsigned char mlow_byte;
  8. unsigned char mhigh_byte;
  9. unsigned char high_byte;
  10. }float_byte;
  11. float  value;
  12. }FLAOT_UNION;

这样可以在程序中直接对各数据赋值,然后获取数据。如对float_byte中的各字节赋值,可以直接从value中获取float型数据,反之亦然。

注意,从上面的转换可以看到,对于定义的数组unsignedchar charArray[4],一般charArray[0]代表低字节,charArray[3]代表高字节。

二、c#

在c#中可以使用BitConverter类中的函数进行转换,如下:

名称

说明

GetBytes(Double)

以字节数组的形式返回指定的双精度浮点值。

GetBytes(Single)

以字节数组的形式返回指定的单精度浮点值。

ToDouble

返回由字节数组中指定位置的八个字节转换来的双精度浮点数。

ToSingle

返回由字节数组中指定位置的四个字节转换来的单精度浮点数。

BitConverter类进行基础数据类型与字节数组之间的相互转换,此类便于操作基本形式的类型。一个字节定义为一个 8位无符号整数。包含的方法如下:

名称

说明

DoubleToInt64Bits

将指定的双精度浮点数转换为 64 位有符号整数。

GetBytes(Boolean)

以字节数组的形式返回指定的布尔值。

GetBytes(Char)

以字节数组的形式返回指定的 Unicode 字符值。

GetBytes(Double)

以字节数组的形式返回指定的双精度浮点值。

GetBytes(Int16)

以字节数组的形式返回指定的 16 位有符号整数值。

GetBytes(Int32)

以字节数组的形式返回指定的 32 位有符号整数值。

GetBytes(Int64)

以字节数组的形式返回指定的 64 位有符号整数值。

GetBytes(Single)

以字节数组的形式返回指定的单精度浮点值。

GetBytes(UInt16)

以字节数组的形式返回指定的 16 位无符号整数值。

GetBytes(UInt32)

以字节数组的形式返回指定的 32 位无符号整数值。

GetBytes(UInt64)

以字节数组的形式返回指定的 64 位无符号整数值。

Int64BitsToDouble

将指定的 64 位有符号整数转换成双精度浮点数。

ToBoolean

返回由字节数组中指定位置的一个字节转换来的布尔值。

ToChar

返回由字节数组中指定位置的两个字节转换来的 Unicode 字符。

ToDouble

返回由字节数组中指定位置的八个字节转换来的双精度浮点数。

ToInt16

返回由字节数组中指定位置的两个字节转换来的 16 位有符号整数。

ToInt32

返回由字节数组中指定位置的四个字节转换来的 32 位有符号整数。

ToInt64

返回由字节数组中指定位置的八个字节转换来的 64 位有符号整数。

ToSingle

返回由字节数组中指定位置的四个字节转换来的单精度浮点数。

ToString(
array<Byte []()>[])

将指定的字节数组的每个元素的数值转换为它的等效十六进制字符串表示形式。

ToString(
array<Byte []()>[], Int32)

将指定的字节子数组的每个元素的数值转换为它的等效十六进制字符串表示形式。

ToString(
array<Byte []()>[], Int32, Int32)

将指定的字节子数组的每个元素的数值转换为它的等效十六进制字符串表示形式。

ToUInt16

返回由字节数组中指定位置的两个字节转换来的 16 位无符号整数。

ToUInt32

返回由字节数组中指定位置的四个字节转换来的 32 位无符号整数。

ToUInt64

返回由字节数组中指定位置的八个字节转换来的 64 位无符号整数。

[cpp] view
plain
 copy

  1. <p><span style="font-size:18px"></span></p>

float型数据与字节数组的转化的更多相关文章

  1. 【Java】字节数组转换工具类

    import org.apache.commons.lang.ArrayUtils; import java.nio.charset.Charset; /** * 字节数组转换工具类 */ publi ...

  2. (IEEE-754) 字节数组与浮点数之间的互相转换(MODBUS float类型)

    在做上位机开发过程中,经常会碰到字节数组与浮点数,整数等数据之间的转换,有时为了验证数据是否解析正确,得借助于IEEE浮点数工具,本文把基于c#实现的浮点数与字节数组(或16进制的字符串)转换的实现方 ...

  3. 将图片文件转化为字节数组字符串,并对其进行Base64编码处理,以及对字节数组字符串进行Base64解码并生成图片

    实际开发中涉及图片上传并且量比较大的时候一般处理方式有三种 1.直接保存到项目中 最老土直接方法,也是最不适用的方法,量大对后期部署很不方便 2.直接保存到指定路径的服务器上.需要时候在获取,这种方式 ...

  4. C#中字符数组,字节数组和string之间的转化

    转自:http://blog.csdn.net/wangxiaoqin00007/article/details/17675419 NDC(NetworkDiskClient)的界面和后台程序之间用S ...

  5. c#中关于结构体和字节数组转化

    最近在使用结构体与字节数组转化来实现socket间数据传输.现在开始整理一下.对于Marshal可以查阅msdn,关于字节数组与结构体转代码如下: using System; using System ...

  6. Android开发之将图片文件转化为字节数组字符串,并对其进行Base64编码处理

    作者:程序员小冰,CSDN博客:http://blog.csdn.net/qq_21376985, 转载请说明出处. /** * @将图片文件转化为字节数组字符串,并对其进行Base64编码处理 * ...

  7. C# double float int string 与 byte数组 相互转化

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

  8. C# 16进制与字符串、字节数组之间的转换(转)

    1.请问c#中如何将十进制数的字符串转化成十六进制数的字符串   //十进制转二进制 Console.WriteLine("十进制166的二进制表示: "+Convert.ToSt ...

  9. Java:IO流其他类(字节数组流、字符数组流、数据流、打印流、Properities、对象流、管道流、随机访问、序列流、字符串读写流)

    一.字节数组流: 类 ByteArrayInputStream:在构造函数的时候,需要接受数据源,而且数据源是一个字节数组. 包含一个内部缓冲区,该缓冲区包含从流中读取的字节.内部计数器跟踪 read ...

随机推荐

  1. 解决Python字符串处理出现错误UnicodeDecodeError: ‘ascii’ codec can’t decode byte 0xe4 in position 108: ordinal not in range(128)

    今天做课程设计遇到了和数据库交互的地方,sqlite数据库设置成utf-8格式编码,插入到数据库中是正确的,但是当读取出来的时候就会出错,原因就是Python的str默认是ascii编码,搜集网上的资 ...

  2. 配置管理puppet

    目录: 1.功能 2.服务器 3.管理对应配置文件 4.脚本相关 5.puppet配置相关 6.puppet客户端安装脚本 7.主机配置文件新增节点详细 8.新增文件项目 9.puppet管理命令   ...

  3. 通过使用scrapy爬取某学校全网

    通过遍历全网url 实现爬取全网内容 忽略“.doc"等文件网页暂不处理,只爬取整个页面,不做清洗 spider.py # -*- coding: utf-8 -*- import scra ...

  4. 【河南省第十届ACM 省赛 A-谍报分析】

    题目描述 “八一三”淞沪抗战爆发后,*几次准备去上海前线视察和指挥作战.但都因为宁沪之间的铁路和公路遭到了敌军的严密封锁,狂轰滥炸,一直未能成行. 特科组织,其主要任务是保卫的安全,了解和掌握敌方的动 ...

  5. sql如何分组选择显示最新的一条数据

    怎样在数据库的一个表里筛选出每一人的时间最新的一条记录?用SQL语句 wenchuan408 wenchuan408    结帖率:100% sql数据库 yhh              name  ...

  6. LeetCode OJ:Add Digits(数字相加)

    Given a non-negative integer num, repeatedly add all its digits until the result has only one digit. ...

  7. react-router-dom: 重定向默认路由

    <appLayout> <Switch> <Route path='/' exact render={()=> ( <Redirect to={this.ge ...

  8. New Concept English three (26)

    34w/m 54words No one can avoid being influenced by advertisements. Much as we may pride ourselves on ...

  9. HAWQ取代传统数仓实践(十四)——事实表技术之累积快照

    一.累积快照简介 累积快照事实表用于定义业务过程开始.结束以及期间的可区分的里程碑事件.通常在此类事实表中针对过程中的关键步骤都包含日期外键,并包含每个步骤的度量,这些度量的产生一般都会滞后于数据行的 ...

  10. cowboy实现websocket

    使用cowboy实现websocket主要实现以下回调函数 下面的函数返回值要具体弄清楚原因参考 websocket具体协议  主要就是两个部分 握手和数据传输 -export([init/3]).  ...