C# 将字节[]转换为单字节
问题: 我正在尝试将C# 将字节[]转换为单字节,c#,.net,C#,.net,问题: 我正在尝试将字节[]转换为单个。我尝试过使用BitConverter.ToSingle(),但没有得到理想的结果 数组的内容是: 0 0 0 一百 所需输出为100;我知道一个Int可以解决这个问题,但我选择这个数字只是为了方便调试。我也尝试过将100移动到阵列中所有可能的位置,但没有运气 我的输出看起来总是像9.334553445e 或者类似的东西,有不同的数字。 任何想法?IEE-754类型(Single和Double-float和Double在C#中)没有简单的二进制表示,因此0x
字节[]
转换为单个
。我尝试过使用BitConverter.ToSingle()
,但没有得到理想的结果
数组的内容是:
00
0
一百 所需输出为
100
;我知道一个Int可以解决这个问题,但我选择这个数字只是为了方便调试。我也尝试过将100移动到阵列中所有可能的位置,但没有运气
我的输出看起来总是像9.334553445e
或者类似的东西,有不同的数字。
任何想法?IEE-754类型(Single
和Double
-float
和Double
在C#中)没有简单的二进制表示,因此0x00 0x00 0x64
不表示0x64
的值(十进制100)
IEEE-754值的实际原始二进制表示相当复杂,设置它们并执行从整数到IEE-754的转换确实不值得付出努力(除非这是一个学习练习)。最好让库/平台甚至处理器为您完成:
因为您的值是一个整数值,所以需要首先将其转换为Int32
,然后使用convert
类(或一个简单的编译器强制转换,它将在后台执行类型转换)
IEE-754类型(Single
和Double
-float
和Double
在C#中)没有简单的二进制表示,因此0x00 0x00 0x64
不表示0x64
的值(十进制为100)
IEEE-754值的实际原始二进制表示相当复杂,设置它们并执行从整数到IEE-754的转换确实不值得付出努力(除非这是一个学习练习)。最好让库/平台甚至处理器为您完成:
因为您的值是一个整数值,所以需要首先将其转换为Int32
,然后使用convert
类(或一个简单的编译器强制转换,它将在后台执行类型转换)
您的代码似乎有问题。然而,我们不能帮助,除非我们有。否则,我们只是盲目地猜测。一个值为100的单数表示为[0,0,200,66]。它是浮点型的,所以它看起来和你需要的不同是有意义的。你不能先转换成int然后再转换成single吗?看来你的代码有问题。然而,我们不能帮助,除非我们有。否则,我们只是盲目地猜测。一个值为100的单数表示为[0,0,200,66]。它是浮点型的,所以它看起来和你需要的不同是有意义的。您不能先转换为int,然后再转换为single吗?为什么不转换为BitConverter.ToSingle?@classictunder,因为
BitConverter.ToSingle
需要一个已经包含IEE-754格式数字的输入数组,而OP的数组包含一个整数值。为什么不使用BitConverter.ToSingle?@ClassicTunder,因为BitConverter.ToSingle
需要一个已经包含IEE-754格式数字的输入数组,而OP的数组包含一个整数值。
Int32 val = BitConverter.ToInt32( yourArray ); // assuming it's little-endian
Single s1 = (Single)val;
Single s2 = Convert.ToSingle( val );