首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用C#将十六进制转换为浮动

如何使用C#将十六进制转换为浮动
EN

Stack Overflow用户
提问于 2019-05-30 01:15:18
回答 1查看 873关注 0票数 0

我是从ST单片机通过UART获得数据和显示值到PC屏幕,但其结果与我所期望的浮动类型不同。

我使用TrueStudio为ST单片机和C#显示在屏幕上的值。我在单片机上使用浮点值,当我进入PC机时将数据发送到PC机,如果我将浮点数显示给textBox,其结果与我所期望的相差太大了。在TrueStudio内存视图和监视视图中,我可以看到以下内容

  1. 在TrueStudio MCU中,我可以看到
代码语言:javascript
复制
- in watch window : acc.x = 5.12400007
- in memory view : 5.124000E0 in floating point format                 CFF7A340 in hex format

  1. 我可以通过C#的visual studio在PC上获取这些数据。
代码语言:javascript
复制
- I can see byte[] array data via watch window and I can see I got

msg4 = 0xCF,msg5 = 0xF7,msg6 = 0xA3,msg7 = 0x40

-所以在12月份,3489112896

-我用这些来转换这个价值,但我没有得到我想要的,5.124

str = "3489112896“Convert.ToDouble(str) = 2246812992

将dec转换为UInt32所以

BitConverter.ToSingle(BitConverter.GetBytes((int)u32),u32 = Convert.ToDouble(str) u32 = 0xcff7a340 (双)u32= 3489112896 (浮子)u32= 3.48911283E+09 0) = -2.21599971E-35

在TrueStudio中,复制如下(在C中)

memcpy(Buflen,&g_Bsp.acc,sizeof(ACC_ST));len += sizeof(ACC_ST);

在视听演播室,C#

UInt32 u32 = (UInt32) ( msg5 << 8) x (msg6 << 16) x(msg7<<24);日志( u32:+u32+ "\n");

我已经尝试了MSB/LSB,但没有得到我想要的。如何在C#中获得5.123浮动值?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-05-30 01:51:37

您可以使用BitConverter.GetBytesBitConverter.ToString转换为十六进制。

代码语言:javascript
复制
public static string FloatToHex(float val)
{
    var bytes = BitConverter.GetBytes(val);
    return BitConverter.ToString(bytes).Replace("-", string.Empty);
}

通过将数据转换回byte数组,然后使用BitConverter.ToSingle,您可以从十六进制转换回来。

代码语言:javascript
复制
public static float HexToFloat(string hexVal)
{
    byte[] data = new byte[hexVal.Length / 2];
    for (int i = 0; i < data.Length; ++i)
    {
        data[i] = Convert.ToByte(hexVal.Substring(i * 2, 2), 16);
    }
    return BitConverter.ToSingle(data, 0);
}

在网上试试

根据您想要与之交换数据的系统,您可能必须考虑到endianness,并相应地反转字节的顺序。您可以使用BitConverter.IsLittleEndian检查endianness。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56370436

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档