【发布时间】:2014-05-03 11:41:27
【问题描述】:
我只是对如何将 4 个有符号字节的数组转换为浮点数感到困惑。
我只知道一个无符号字节bts的数组,也许我可以使用这个函数
BitConverter.ToSingle(bts, 0);
但是,看起来 BitConverter.ToSingle 只接受字节数组而不是 sbyte 数组。
有人能给我一些建议吗?
谢谢!
【问题讨论】:
-
因为它转换对象类型,它不转换值。每 4 个字节将变成一个浮点值。因为字节只是内存中浮点表示的一部分,所以符号在那里没有任何意义。如果必须转换值,则必须创建一个新的浮点数组并在那里复制值(一个接一个)。
-
您的带符号字节以什么方式表示浮点数?通常 4 个无符号字节代表一个浮点数,如下所述。如果你给出一个具体的例子,我们可以给出一个解决方案
-
也就是说,如果我得到一个有符号数组和另一个无符号数组但字节相同,理论上它们可以变成相同的浮点数.....
-
但是……你是怎么得到 sbyte[] 的?我想理论上你可以
BitConverter.ToSingle(bts.Select(b=>(byte)(b+128)).ToArray()) -
如果这是关于浮动的一点表示,那么他们一开始就不应该是
sbyte。检查上游的数据流是否存在问题。