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. Android查缺补漏(View篇)--事件分发机制

    事件分发机制是Android中非常重要的一个知识点,同时也是难点,相信到目前为止很多Android开发者对事件分发机制并没有一个非常系统的认识,当然也包括博主个人在内.可能在平时的开发工作中我们并没有 ...

  2. SP3精密星历简介

    IGS精密星历采用sp3格式,其存储方式为ASCII文本文件,内容包括表头信息以及文件体,文件体中每隔15 min给出1个卫星的位置,有时还给出卫星的速度.它的特点就是提供卫星精确的轨道位置.采样率为 ...

  3. 2.2 .this的绑定规则

    2.this的绑定规则 1.默认绑定 function foo( ) { console.log(this.a); } var a=1; foo(); 在代码中,foo()函数不带任何修饰的引用进行调 ...

  4. iOS 开发 右滑返回上一级控制器

    #import <objc/runtime.h> @interface UINavigationController (Transition)<UIGestureRecognizer ...

  5. Linux之内存描述符mm_struct

    Linux对于内存的管理涉及到非常多的方面,这篇文章首先从对进程虚拟地址空间的管理说起.(所依据的代码是2.6.32.60) 无论是内核线程还是用户进程,对于内核来说,无非都是task_struct这 ...

  6. 七牛php-sdk使用

    使用七牛云存储服务有一年多了,大部分功能基于其PHP-SDK来做开发,现对sdk的一些功能做一个总结. 一.资源上传 上传资源文件到七牛空间的不同实现方法 二.文档转换 介绍如何使用七牛以及七牛第三方 ...

  7. 认识Java中的字符串

    Java 中 String 类的常用方法 Ⅰ String 类提供了许多用来处理字符串的方法,例如,获取字符串长度.对字符串进行截取.将字符串转换为大写或小写.字符串分割等,下面我们就来领略它的强大之 ...

  8. 初识mysql学习笔记

    使用VMVirtualBox导入Ubuntu后,可以通过sudo apt-get install mysql-server命令下载mysql. 在学习过程中,我遇到了连接不上Xshell的问题.最终在 ...

  9. deeplearning.ai 改善深层神经网络 week3 超参数调试、Batch正则化和程序框架 听课笔记

    这一周的主体是调参. 1. 超参数:No. 1最重要,No. 2其次,No. 3其次次. No. 1学习率α:最重要的参数.在log取值空间随机采样.例如取值范围是[0.001, 1],r = -4* ...

  10. 51Nod 1083 矩阵取数问题(矩阵取数dp,基础题)

    1083 矩阵取数问题 基准时间限制:1 秒 空间限制:131072 KB 分值: 5 难度:1级算法题 一个N*N矩阵中有不同的正整数,经过这个格子,就能获得相应价值的奖励,从左上走到右下,只能向下 ...