如何检查字节值是int还是float?

时间:2018-02-06 11:28:09

标签: c#

假设字节只包含int或float 这是我的理由。

有没有办法知道C#中的字节值是int还是float?

字节可以包含int格式或float格式(符号+指数+分数)。
使用
从字节读取数据 BitConverter.ToInt32和BitConverter.ToSingle有很大的不同。

byte[]  src = new byte[4];

// float or int assignment to src bytes
// ...
// ...

// way to know the value is int or float?
if(/* src is int format */)
    int valueInt = BitConverter.ToInt32(src, 0);
else 
    float valueFloat = BitConverter.ToSingle(src, 0);

1 个答案:

答案 0 :(得分:0)

"有没有办法知道C#中的字节值是int还是float?" 哎呀!

即使你知道内存中的字节是一个字符串,你也无法阅读甚至定义它们结束而不知道使用了数百种可能的编码: http://www.joelonsoftware.com/articles/Unicode.html

相同的字节可以是有效的位图或我们这个时代最危险的病毒,它取决于它们的解释方式(作为位图或可执行代码)。 Windows中的文件结尾用于定义应该如何解释任何字节集(程序也应该被处理)。很多常见的格式都有一种方法可以识别"作为第一个二进制信息。

携带类型信息和解释所需的其他内容通常是我们通过De(Sertialsiation)传输内容的原因,如XML,JSON等。