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. win10/win7下不通过winmanager整合NERDTree和Tagbar的gVim8.0配置

    本文版权归作者所有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利. 注:图片来自作者公众号--"iKM_2018",亦即& ...

  2. Java与算法之(1) - 冒泡排序

    冒泡排序法的原理是,每次比较相邻的两个元素,如果它们的顺序错误就把它们交换过来. 例如对4 3 6 2 7 1 5这7个数字进行从小到大的排序,从最左侧开始,首先比较4和3 因为是从小到大排序,4和3 ...

  3. HDU 1000 A + B Problem(指针版)

    A + B Problem Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) To ...

  4. HDU 4010 Query on The Trees

    Problem Description We have met so many problems on the tree, so today we will have a query problem ...

  5. Codeforces 834E The Bakery【枚举+数位dp】

    E. Ever-Hungry Krakozyabra time limit per test:1 second memory limit per test:256 megabytes input:st ...

  6. hdu_3003Pupu(快速幂)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=3003 Pupu Time Limit: 2000/1000 MS (Java/Others)    M ...

  7. ElasticSearch + xpack 使用.md

    ElasticSearch 是一个高可用开源全文检索和分析组件.提供存储服务,搜索服务,大数据准实时分析等.一般用于提供一些提供复杂搜索的应.我们为什么要选择 ElasticSearch ?因为它是一 ...

  8. 【Keras】基于SegNet和U-Net的遥感图像语义分割

    上两个月参加了个比赛,做的是对遥感高清图像做语义分割,美其名曰"天空之眼".这两周数据挖掘课期末project我们组选的课题也是遥感图像的语义分割,所以刚好又把前段时间做的成果重新 ...

  9. [国嵌笔记][025][ARM指令分类学习]

    算术和逻辑指令 1.mov 格式:mov {条件}{s} <dest>, <op> 作用:把一个值从一个地方移动到另一个地方,<dest>必须是寄存器 示例: @m ...

  10. CSS鼠标样式 cursor 属性

    值 描述 url 需使用的自定义光标的 URL. 注释:请在此列表的末端始终定义一种普通的光标,以防没有由 URL 定义的可用光标. default 默认光标(通常是一个箭头) auto 默认.浏览器 ...