C# C中的24位和16位浮点数#

C# C中的24位和16位浮点数#,c#,type-conversion,16-bit,24-bit,C#,Type Conversion,16 Bit,24 Bit,我有一个32位tiff文件,它每像素存储4字节的值。我使用BitConverter.toSingle()将每个4字节的值转换为像素值,效果很好。但问题是我有24和16位tiff文件,每个像素值有3和2个字节。我不能使用BitConverter.toSingle()方法,因为它只支持4字节的数组。如何将这些字节值转换为浮点数 更新1: 我添加了一个图像,只是为了澄清像素值是浮点数(请看注释)。 您需要逐字节执行—从输入流(像素数据)中读取每个字节,然后将其转换为32位内存像素。手动,基本上:处理原

我有一个32位tiff文件,它每像素存储4字节的值。我使用
BitConverter.toSingle()
将每个4字节的值转换为像素值,效果很好。但问题是我有24和16位tiff文件,每个像素值有3和2个字节。我不能使用
BitConverter.toSingle()
方法,因为它只支持4字节的数组。如何将这些字节值转换为浮点数

更新1:

我添加了一个图像,只是为了澄清像素值是浮点数(请看注释)。

您需要逐字节执行—从输入流(像素数据)中读取每个字节,然后将其转换为32位内存像素。手动,基本上:处理原始字节,熟悉移位、位掩码等;例如,以小尾端顺序处理3个字节将是
data[index++]|(data[index++]@xxbbcc,谢谢你的评论。请给我一个如何处理的例子。@nassertahani Marc刚刚做了,读了他的评论。@MarcGravel很抱歉,我在网上冲浪后无法理解它是如何工作的。如果我有一个像“byte[]这样的字节数组b={0,88,68}“我知道它的值是43,如何用位运算符转换它?”b[0]| b[1]