如何在C#中获取浮点数的IEEE 754二进制表示

我有一些单精度和双精度浮点数,我想写入并从字节[]中读取。 .Net中有什么东西可以用来将它们转换成32位和64位IEEE 754表示forms吗?

.NET Single和Double已经采用IEEE-754格式。 您可以使用BitConverter.ToSingle()和ToDouble()将byte []转换为浮点,GetBytes()转换为另一种方式。

如果您不想一直分配新数组(这是GetBytes所做的那样),您可以使用unsafe代码直接写入缓冲区:

 static void Main() { byte[] data = new byte[20]; GetBytes(0, data, 0); GetBytes(123.45F, data, 4); GetBytes(123.45D, data, 8); } static unsafe void GetBytes(float value, byte[] buffer, int offset) { fixed (byte* ptr = &buffer[offset]) { float* typed = (float*)ptr; *typed = value; } } static unsafe void GetBytes(double value, byte[] buffer, int offset) { fixed (byte* ptr = &buffer[offset]) { double* typed = (double*)ptr; *typed = value; } }