C# 从十六进制转换为浮点

C# 从十六进制转换为浮点,c#,floating-point,hex,C#,Floating Point,Hex,我有一个字符串数组,其中包含十六进制值。我想把它转换成浮点数组。我尝试了下面的代码,但没有给出正确的结果: bufferArray是包含十六进制值的字符串数组 float[] dblBffrArry = new float[bufferArray.Length]; for (int i = 0; i < bufferArray.Length; i++) { long parsed = long.Parse(bufferArray[i], NumberStyles.AllowHex

我有一个字符串数组,其中包含十六进制值。我想把它转换成浮点数组。我尝试了下面的代码,但没有给出正确的结果:

bufferArray
是包含十六进制值的字符串数组

float[] dblBffrArry = new float[bufferArray.Length];

for (int i = 0; i < bufferArray.Length; i++)
{
    long parsed = long.Parse(bufferArray[i], NumberStyles.AllowHexSpecifier);
    dblBffrArry[i] = parsed;
}
float[]dblBffrArry=newfloat[bufferArray.Length];
for(int i=0;i
你能指出另一种方法吗?

可能类似于:

float[] floatBffrArry = bufferArray.Select(s => Convert.ToInt64(s, 16))
    .Select(i => (float)i).ToArray();
编辑:

对你所问问题的另一种解释是:

float[] floatBffrArry6 = bufferArray.Select(s => Convert.ToUInt64(s, 16))
    .Select(i => BitConverter.ToSingle(BitConverter.GetBytes(i), 0)).ToArray();
当你不给出输入和输出的例子时,很难确切地知道你想要什么


当然,对于这两个例子,都不需要
。在彼此之后选择
;我们可以使用一个
。如果我们将一个lambda箭头
=>
替换为另一个,请选择

作为答案书写,因为它需要一些空间

Jeppe Stig Nielsen的答案是正确的,比这里提出的答案更简洁

以下内容对您有何帮助:

    var bufferArray = new string[] {"43480170", "41CA0000" };

    float[] dblBffrArry = new float[bufferArray.Length];

    for (int i = 0; i < bufferArray.Length; i++)
    {
        uint parsed = uint.Parse(bufferArray[i], NumberStyles.AllowHexSpecifier);
        // following two lines are the missing steps in your loop
        byte[] byteArray = BitConverter.GetBytes(parsed);
        float floatValue = BitConverter.ToSingle(byteArray, 0);
        // ---- 
        dblBffrArry[i] = floatValue;
    }

    foreach (var floatValue in dblBffrArry)
    {
        Console.Write("{0}-",floatValue);
    }
var bufferArray=新字符串[]{“43480170”,“41CA0000”};
float[]dblBffrArry=newfloat[bufferArray.Length];
for(int i=0;i
我希望有帮助

[编辑-固定链接]
PS:我采用了所示的解决方案。

我相信这已经得到了回答。你介意退房吗。我希望有帮助。谢谢你的评论。在该示例中,他/她对BitConverter.GetBytes()使用十六进制参数。有没有办法将此方法与字符串参数一起使用?当前方法有什么问题?字符串使用什么编码?它们需要多长时间?使用@MechanicalObject建议的方法。使用
ulong.Parse
将字符串解析为
ulong
,然后将该值传递给
BitConverter.GetBytes
,如链接的问题所示。@user1529034由于注释有限,我添加了您的问题作为答案。当你有空的时候给出你的反馈。