Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/334.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 将字节[]转换为单字节_C#_.net - Fatal编程技术网

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()
,但没有得到理想的结果

数组的内容是:

0
0
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 );