我想将给定的
float
转换为其二进制表示。我试图将浮点值写入 MemoryStream
,逐字节读取此 MemoryStream
并将字节转换为它们的二进制表示。但是每次尝试都失败了。
- "无法读取关闭的流"(但我只关闭了写入器)
- 出于测试目的,我只是写了一个整数(我认为大小为四个字节),当我没有刷新
StreamWriter
时,MemoryStream
的长度为0,而当我这样做时,长度为1。
float
转换为二进制,但我也想学习一些关于 MemoryStream
类的知识。
StreamWriter
中可以看到:“实现了一个TextWriter,用于将字符以特定编码写入流中”- 这不是你想要的。 - Jon Skeetuint
(对于float
)和ulong
(对于double
)?使用byte[]
数组可能需要在堆上构建对象,并且不提供简单的位操作。 - Willem Van Onsemdouble
类型有BitConverter.DoubleToInt64Bits
函数,但我不知道是否有类似的函数适用于float
类型。 - Jon Skeetulong db=*(ulong*)&d;
或者uint fb=*(uint*)&f;
。这可能是最有效的方法。 - Willem Van OnsemBitConverter
所做的事情,但不需要你使用不安全代码 :) - Jon Skeet