0 0

C# 如何得到float型的Int32的 IEEE 754 浮点值的表示形式5

Java中的代码:
int a = Float.floatToIntBits(123456789012345678901234567890.123456789F);
int b = (int) Double.doubleToLongBits(1234567890123456789012345678901234567890.123456789D);

// a = 1875342472
// b = 61736672


就是把float和double在内存中的存储形式,用Int32和Long64表示出来的方法。

问题补充:
我之前也摸到了BitConverter,但是没找对方法,谢谢。

但是,怎么似乎没有 SingleToInt32Bits 这个方法???
DoubleToInt64Bits倒是有,double已测试测试成功。
还差float。
问题补充:
我自己找了一段,但是太复杂了,类库里真的没有吗?


int b = new Int32SingleUnion(f).AsInt32;

        [StructLayout(LayoutKind.Explicit)]
        private struct Int32SingleUnion
        {
            /// <summary>
            /// Int32 version of the value.
            /// </summary>
            [FieldOffset(0)]
            int i;
            /// <summary>
            /// Single version of the value.
            /// </summary>
            [FieldOffset(0)]
            float f;


            internal Int32SingleUnion(int i)
            {
                this.f = 0; // Just to keep the compiler happy
                this.i = i;
            }

            internal Int32SingleUnion(float f)
            {
                this.i = 0; // Just to keep the compiler happy
                this.f = f;
            }

            internal int AsInt32
            {
                get { return i; }
            }

            internal float AsSingle
            {
                get { return f; }
            }
        }
2009年6月05日 16:34

3个答案 按时间排序 按投票排序

0 0

采纳的答案

可以这么用:

int a = BitConverter.ToInt32(BitConverter.GetBytes(14f), 0);

2009年6月05日 23:49
0 0

呃啊……抱歉抱歉 T T
我只是印象中记得BitConverter有DoubleToInt64Bits方法,没去查文档就回复了……我错了 T T
你找的那段代码已经算是最简单的了……就留着用呗,没坏处。这种办法就是模拟C的时代用union来做类型转换的trick,简单实用。

2009年6月05日 18:12
0 0

用BitConverter.SingleToInt32Bits和BitConverter.DoubleToInt64Bits即可

2009年6月05日 16:49

相关推荐

    C# IEEE754浮点数转换示例代码

    ### C# IEEE754浮点数转换技术详解 #### 一、IEEE754标准简介 IEEE 754是国际电气与电子工程师协会(Institute of Electrical and Electronics Engineers, IEEE)制定的一种浮点数表示标准。该标准定义了浮点数在...

    C# IEEE754转换32位浮点数为10进制数 电力仪表RS485专用

    ### C# 中 IEEE754 转换 32 位浮点数为十进制数 在电力仪表行业中,经常会遇到需要处理通过 RS485 接口传输的数据,尤其是在读取电力仪表中的浮点数值时。IEEE754 是一种用于表示计算机系统中的实数的标准格式。...

    C# Byte数组转Int32 Short Float(浮点数)

    3. **Float到/从字节数组**:`Float`是单精度浮点数,占用32位,符合IEEE 754标准。转换时,使用`BitConverter.ToSingle()`和`BitConverter.GetBytes()`方法。 **字节顺序问题** 在进行字节数组和数值类型之间的...

    IEEE754标准 32位16进制转浮点数

    在计算机科学领域,IEEE754标准是用于表示浮点数的一种广泛接受的规范,它定义了浮点数如何在二进制系统中存储和计算。这个标准在各种编程语言和硬件平台上都被采用,包括C#。对于32位浮点数,IEEE754标准使用单精度...

    16位转浮点型float,MODBUS 32位转浮点型float 64位转双浮点型double

    本篇主要介绍16位、32位以及64位数据如何转换为浮点型(float)和双浮点型(double)。 首先,我们要理解二进制、16进制与浮点数的关系。计算机内部存储数字都是以二进制形式,而16进制是人类更易读的一种表示方式...

    基于IEEE754标准 将一个十六进制转换为十进制浮点数

    IEEE754标准是一个全球广泛采用的浮点数表示法,它定义了如何用二进制形式来存储、运算和交换浮点数。这个标准对于理解和转换不同进制之间的浮点数至关重要。本篇文章将深入探讨基于IEEE754标准将十六进制转换为十...

    C#实现十六进制转换成浮点数

    在计算机内部,浮点数通常是用IEEE 754标准来存储的,分为单精度(float)和双精度(double)两种。单精度浮点数占32位,双精度浮点数占64位。其中,一部分位用来存储符号、指数和尾数,这些部分共同决定了浮点数的...

    C#浮点数和16进制字节数互相转换

    单精度浮点数(Single)在C#中占用4个字节(32位),按照IEEE 754标准,这32位分为三部分:符号位(1位)、指数部分(8位)和尾数部分(23位)。当我们要将一个浮点数转换为16进制字符串时,实际上是把这32位二进制...

    16进制数据与浮点型数据转换——c语言程序

    它们的值由一个符号位、指数部分和尾数部分组成,遵循IEEE 754标准。 3. **数据转换**: 在C语言中,数据类型的转换可以通过类型转换函数(如(float)或(double))或直接赋值实现。本程序中,可能涉及将16进制字符...

    c#,十六进制转换成浮点数

    需要了解IEEE 754浮点数标准,它是大多数现代计算机系统中用于存储浮点数的标准。该标准定义了两种主要格式:单精度(32位)和双精度(64位)。C#中的`float`对应单精度,`double`对应双精度。 - **单精度转换**:...

    浮点型与十六进制转换

    在大多数计算机系统中,浮点数遵循IEEE 754标准,该标准定义了如何用二进制表示浮点数。一个浮点数由三部分组成:符号位(sign)、指数(exponent)和尾数(mantissa)。浮点数转换为十六进制时,通常先将其转换为二...

    二进制浮点转十进制(C#)

    在计算机科学中,二进制浮点数是用于表示实数的一种方式,它基于二进制的浮点表示法。二进制浮点数由一个符号位、指数部分和尾数部分组成,常用于存储和计算高精度和/或快速响应的数值。在C#编程语言中,理解和操作...

    32位浮点数转换成十进制小数程序

    这种数据类型按照IEEE 754标准进行编码,可以表示从大约1.4e-45到3.4e38的数值范围。在C#编程语言中,32位浮点数通常被表示为`float`或`Single`类型。本程序的目标是将这种32位的二进制浮点数转换为十进制小数。 ...

    c#中的浮点型转整形的舍取 四舍五入和银行家舍入实现代码

    在C#编程语言中,将浮点型(如`double`或`float`)转换为整型(如`int`)涉及到数值舍取的过程。在处理这种转换时,有两种常见的舍取策略:直接截断和四舍五入。在C#中,默认的浮点型到整型转换是直接截断,即将小数...

    查看浮点数float 在内存中二进制数 c#

    `float`在C#中是一个32位的浮点数,按照IEEE 754标准,它分为三个主要部分:符号位(1位)、指数位(8位)和尾数位(23位)。符号位决定数的正负,指数位表示指数的偏移值,而尾数位则存储小数部分。 1. 符号位:第...

    c# 编程基础知识(基础资料)

    - `float`:单精度浮点型,32位。 - `double`:双精度浮点型,64位。 - 使用IEEE 754标准表示。 - **十进制型** - `decimal`:128位数据类型,适合于财务和货币计算。 - **布尔型** - `bool`:表示真(true)或...

    读写PLC浮点数+转换_MXComponentlabview_

    在LabVIEW中,可以使用内置的浮点数转换函数,如`Float32 To Integer`和`Integer To Float32`,分别对应于上述两个VI的功能。这两个函数确保了数据在PLC和LabVIEW之间正确无误地传递。 在实际应用中,你可能需要...

    【C# 基础精讲】C# 数据类型概述

    - 浮点型:`float`(单精度浮点数,32位),`double`(双精度浮点数,64位)。浮点数用于处理小数部分的数值,通常在科学计算中使用。 - 字符型:`char`,用于存储单个字符,如字母、数字或其他符号,它占16位。 - ...

    C#基本语法

    - 简单类型:有符号整型(sbyte、short、int、long)、无符号整型(byte、ushort、uint、ulong)、Unicode字符型(char)、IEEE浮点型(float、double)、高精度小数型(decimal)以及布尔型(bool)。 - 枚举类型...

Global site tag (gtag.js) - Google Analytics