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. yii2输出sql

    yii2如何输出sql语句? 单表查询sql: 我的model是:coupon,那么sql输出为: $a = coupon::find()->createCommand()->getRaw ...

  2. 分享知识-快乐自己:Ajax 跨域请求处理

    <%-- Created by IntelliJ IDEA. User: asus Date: 2019/1/24 Time: 15:57 To change this template use ...

  3. mysql的bin或者sbin目录可执行文件

    一. mysql服务和myql服务启动程序 1. mysqld mysqld就是mysql server,负责管理对mysql数据的访问. 当mysql server启动后,它会监听来自客户端的网络连 ...

  4. 析构函数和Dispose方法的区别

    1. 析构函数(Finalize)只能释放非托管资源, 它是由GC调用. 2. Dispose方法可以释放托管资源和非托管资源,它是由用户手动调用的. 在Dispose()中调用 GC.Suppres ...

  5. PhantomJS 和Selenium模拟页面js点击

    由于自己不怎么会javascripts,无法找全所有的参数进行模拟提交,所以只能寻求Selenium和PhantpmJS的方式. 先说下ubuntu上怎么安装相应的环境,尤其PhantomJS安装比较 ...

  6. iOS自动化探索(四)自动化测试框架pytest - 安装和使用

    自动化测试框架 - pytest pytest是Python最流行的单元测试框架之一, 帮助更便捷的编写测试脚本, 并支持多种功能复杂的测试场景, 能用来做app测试也能用作函数测试 官方文档: ht ...

  7. 【pat-1074】宇宙无敌加法器(高精度)

    链接:https://www.patest.cn/contests/pat-b-practise/1074 地球人习惯使用十进制数,并且默认一个数字的每一位都是十进制的.而在PAT星人开挂的世界里,每 ...

  8. Makefile的补充学习2

    Makefile中使用通配符(1)* 若干个任意字符(2)? 1个任意字符(3)[] 将[]中的字符依次去和外面的结合匹配 还有个%,也是通配符,表示任意多个字符,和*很相似,但是%一般只用于规则描述 ...

  9. QListWidgetItem的图片大小问题

    图片的大小是由listWidget的setIconSize设定的,而不是ListWidgetItem的SetIcon设定的

  10. react_webpack.prod.config

    const path = require('path'); const webpack = require('webpack'); const jquery = require('jquery'); ...