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. Vim 在 windows 环境下的初步配置

    一..下载工具包 vim 程序:下载安装程序 vim-plug 插件: 下载插件管理文件 二. 安装 VIM 1.如果无特别要求,一路选择默认, 在类型选择时,选择 full 2. 配置 vim-pl ...

  2. 实体处理模块IEntityModule

    在2015年7月16日,XCode新增了实体处理模块IEntityModule,用于拦截实体对象添删改操作. 该接口参考IHttpModule设计理念,横切在实体对象的关键生命周期之中,以达到多实体类 ...

  3. 【mp3】洗脑循环了!龙珠超 自在极意功 【究极の圣戦】串田アキラ 背景纯音乐

    自在极意功情况下发动自带bgm 曲名:究极の圣戦 首先是视频: http://dwz.cn/6Tj2Lq 然后是mp3:度盘下载>> 老外翻唱: 个人翻唱:全民k歌>>

  4. django图书管理半成品(MySQL)

    本次需要用到MySQL数据库,所以先配置数据库,在seeting文件中配置: 数据库第一次使用需要配置: python manage.py makemigrations #生成配置文件 python ...

  5. flask-sqlalchemy使用命令创建数据库

    # 启动文件from flask_script import Manager,Server from flask_migrate import MigrateCommand,Migrate from ...

  6. CTF---安全杂项入门第三题 这是捕获的黑客攻击数据包,Administrator用户的密码在此次攻击中泄露了,你能找到吗?

    这是捕获的黑客攻击数据包,Administrator用户的密码在此次攻击中泄露了,你能找到吗?分值:30 来源: 2014sctf 难度:难 参与人数:3918人 Get Flag:384人 答题人数 ...

  7. Codeforces Beta Round #2 A,B,C

    A. Winner time limit per test:1 second memory limit per test:64 megabytes input:standard input outpu ...

  8. UVa 725 简单枚举+整数转换为字符串

    Division  Write a program that finds and displays all pairs of 5-digit numbers that between them use ...

  9. WERTYU(getchar()用法)

    题目连接:http://acm.tju.edu.cn/toj/showp.php?pid=13681368.   WERTYU Time Limit: 1.0 Seconds   Memory Lim ...

  10. callback和spring的MD5加密

    举个例子:当我们访问淘宝网站的时候,当点击购物车的时候,这个时候提示用户登录用户名和密码,登录成功后,会返回到购物车的页面.这就是回调. 它不返回淘宝的首页,而是返回到我们点击的内容所在页面. 在写接 ...