public  class IEEE754 {

/// <summary>

/// 将二进制值转ASCII格式十六进制字符串

/// </summary>

/// <paramname="data">二进制值</param>

/// <paramname="length">定长度的二进制</param>

/// <returns>ASCII格式十六进制字符串</returns>

public static string toHexString(int data, int length)

{

string result = "";

if (data > 0)

result = Convert.ToString(data, 16).ToUpper();

if (result.Length < length)

{

// 位数不够补0

StringBuilder msg = new StringBuilder(0);

msg.Length = 0;

msg.Append(result);

for (; msg.Length < length; msg.Insert(0, "0")) ;

result = msg.ToString();

}

return result;

}

///<summary>

/// 将浮点数转ASCII格式十六进制字符串(符合IEEE-754标准(32))

/// </summary>

/// <paramname="data">浮点数值</param>

/// <returns>十六进制字符串</returns>

public static string FloatToIntString(float data)

{

byte[] intBuffer = BitConverter.GetBytes(data);

StringBuilder stringBuffer = new StringBuilder(0);

for (int i = 0; i < intBuffer.Length; i++)

{

stringBuffer.Insert(0, toHexString(intBuffer[i] & 0xff, 2));

}

return stringBuffer.ToString();

}

/// <summary>

/// 将ASCII格式十六进制字符串转浮点数(符合IEEE-754标准(32))

/// </summary>

/// <param name="data">16进制字符串</param>

/// <returns></returns>

public static float StringToFloat(String data)

{

if (data.Length < 8 || data.Length > 8)

{

//throw new NotEnoughDataInBufferException(data.length(), 8);

return 0;

}

else

{

byte[] intBuffer = new byte[4];

// 将16进制串按字节逆序化(一个字节2个ASCII码)

for (int i = 0; i < 4; i++)

{

intBuffer[i] = Convert.ToByte(data.Substring((3 - i) * 2, 2), 16);

}

return BitConverter.ToSingle(intBuffer, 0);

}

}

/// <summary>

/// 将byte数组转为浮点数

/// </summary>

/// <param name="bResponse">byte数组</param>

/// <returns></returns>

public static float ByteToFloat(byte[] bResponse)

{

if (bResponse.Length < 4 || bResponse.Length > 4)

{

//throw new NotEnoughDataInBufferException(data.length(), 8);

return 0;

}

else

{

byte[] intBuffer = new byte[4];

//将byte数组的前后两个字节的高低位换过来

intBuffer[0] = bResponse[1];

intBuffer[1] = bResponse[0];

intBuffer[2] = bResponse[3];

intBuffer[3] = bResponse[2];

return BitConverter.ToSingle(intBuffer, 0);

}

}

}

IEEE754 处理数据变换的更多相关文章

  1. kaggle数据挖掘竞赛初步--Titanic<数据变换>

    完整代码: https://github.com/cindycindyhi/kaggle-Titanic 特征工程系列: Titanic系列之原始数据分析和数据处理 Titanic系列之数据变换 Ti ...

  2. R学习笔记 第五篇:数据变换和清理

    在使用R的分组操作之前,首先要了解R语言包,包实质上是实现特定功能的,预先写好的代码库(library),R拥有大量的软件包,许多包都是由某一领域的专家编写的,但并不是所有的包都有很高的质量的,在使用 ...

  3. R实战 第六篇:数据变换(aggregate+dplyr)

    数据分析的工作,80%的时间耗费在处理数据上,而数据处理的主要过程可以分为:分离-操作-结合(Split-Apply-Combine),也就是说,首先,把数据根据特定的字段分组,每个分组都是独立的:然 ...

  4. dplyr-高效的数据变换与整理工具--转载

    1.背景简介 在数据分析工作中,经常需要对原始的数据集进行清洗.整理以及变换.常用的数据整理与变换工作主要包括:特定分析变量的选取.满足条件的数据记录的筛选.按某一个或几个变量排序.对原始变量进行加工 ...

  5. Scikit-learn数据变换

    转载自:https://blog.csdn.net/Dream_angel_Z/article/details/49406573 本文主要是对照scikit-learn的preprocessing章节 ...

  6. Pytorch数据变换(Transform)

    实例化数据库的时候,有一个可选的参数可以对数据进行转换,满足大多神经网络的要求输入固定尺寸的图片,因此要对原图进行Rescale或者Crop操作,然后返回的数据需要转换成Tensor如: import ...

  7. 《R in Action》读书笔记(3) 数据变换

    MindMapper 原文件

  8. 在python3下对数据分块(8x8大小)使用OpenCV的离散余弦变换DCT

    在MATLAB中有blkproc (blockproc)对数据处理, 在python下没找到对应的Function, 这里利用numpy 的split(hsplit和vsplit) 对数据分块处理成8 ...

  9. 数据集成、变换、归约及相关MATLAB工具箱函数

    数据预处理的主要内容包括数据清洗.数据集成.数据变换和数据规约,在数据挖掘的过程中,数据预处理工作量占到了整个过程的60%.数据清洗在上一篇博客中写过,这里主要写后面三部分. 数据集成 数据挖掘需要的 ...

随机推荐

  1. VS如何设置类或函数前不显示引用的数量

    问题如下: 取消显示这个引用的步骤: 找到菜单栏: 工具 ---> 选项  ---> 文本编辑器 ---> 所有语言 ---> CodeLens 设置取消启用CodeLens, ...

  2. 分布式架构ActiveMQ的安装与使用(单节点)

    具体内容请参考样例代码和视频教程: http://www.roncoo.com/course/view/85d6008fe77c4199b0cdd2885eaeee53   IP:192.168.4. ...

  3. 【Docker】安装Docker及基本使用

    该文以CentOS系统为例,介绍Docker安装及基本使用.为了简化安装流程,Docker 官方提供了一套安装脚本,CentOS 系统上可以使用这套脚本安装: curl -sSL https://ge ...

  4. 图的简单应用(C/C++实现)

    存档: #include <stdio.h> #include <stdlib.h> #define maxv 10//定义最大顶点数 typedef char elem;// ...

  5. AtCoder Regular Contest 071

    C - 怪文書 / Dubious Document 题意:定义一种无序的子序列:在原串中随意地取字符并随意打乱顺序.求多个字符串的最长公共无序子序列. #include<cstdio> ...

  6. vijos 1213:80人环游世界

    描述 想必大家都看过成龙大哥的<80天环游世界>,里面的紧张刺激的打斗场面一定给你留下了深刻的印象.现在就有这么一个80人的团伙,也想来一次环游世界. 他们打算兵分多路,游遍每一个国家. ...

  7. hdu_2604Queuing(快速幂矩阵)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2604 Queuing Time Limit: 10000/5000 MS (Java/Others)  ...

  8. Codeforces__Raising Bacteria

    题目传送门:Raising Bacteria //问题描述:一个盒子里面放一个细菌在一天可以增生两个细菌. 现在已知盒子里面细菌的个数,问你最初放多少个细菌可以增生盒子里面的细菌数量 //输入:盒子中 ...

  9. RAID 详解

    一.什么是RAID 磁盘阵列全名是『Redundant Arrays of Inexpensive Disks, RAID 』,英翻中的意思是:容错式廉价磁盘阵列. RAID 可以透过一个技术(软件或 ...

  10. 基于Echarts4.0实现旭日图

    昨天Echarts4.0正式发布,随着4.0而来的是一系列的更新,挑几个主要的简单说明: 1.展示方面通过增量渲染技术(4.0+)ECharts 能够展现千万级的数据量 2.针对移动端优化,移动端小屏 ...