繁体   English   中英

如何将 IEEE-754 浮点数从十进制浮点数转换为 32 位十六进制 C#

[英]How to Convert IEEE-754 Floating-Point Conversion From Decimal Floating-Point To 32-bit Hexadecimal C#

如何将 IEEE-754 浮点数从十进制浮点数转换为 32 位十六进制数? 示例:75 十进制浮点数 = 42960000 十六进制十进制。

using System;
using System.Buffers.Binary;

float value = 75;
var bytes = new byte[sizeof(float)]; // could also use stackalloc here, but 
                                     // would need to do the x2 convert manually
BinaryPrimitives.WriteSingleBigEndian(bytes, value);
var hex = BitConverter.ToString(bytes); // lazy way of getting hex
Console.WriteLine(hex);

您还可以使用BitConverter来获取字节,但是您需要注意 CPU 字节序:

using System;

float value = 75;
var bytes = BitConverter.GetBytes(value);
if (BitConverter.IsLittleEndian) Array.Reverse(bytes);
var hex = BitConverter.ToString(bytes); // lazy way of getting hex
Console.WriteLine(hex);

或零分配:

using System;
using System.Buffers.Binary;

float value = 75;
Span<byte> bytes = stackalloc byte[sizeof(float)]; 
BinaryPrimitives.WriteSingleBigEndian(bytes, value);
const string hex = "0123456789abcdef";
foreach (var b in bytes)
{
    Console.Write(hex[(b >> 4) & 0b1111]); // hi
    Console.Write(hex[b & 0b1111]); // lo
}

在 .Net 5.0+ 和 .Net Core 2.0+ 中,您可以使用BitConverter.SingleToInt32Bits

var hex = BitConverter.SingleToInt32Bits(myfloat).ToString("X");

还有BitConverter.DoubleToInt64Bits用于double

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM