将 char 转换为 double
Posted
技术标签:
【中文标题】将 char 转换为 double【英文标题】:Convert char to double 【发布时间】:2013-06-17 09:10:24 【问题描述】:我正在为我的硬件编写数据采集代码。
但是,我需要找到我收集的数据的平均值。
问题来了,获取到的数据是unsigned char
格式,我需要转换成double
格式。此外,收集的数据是指数形式的[1.789232E-05]。
有没有办法将unsigned char
转换为double
然后再转换回来??
我有一个double j
和一个unsigned char a[200]
无符号字符由 1.789232E-05 组成。如何将该数据转换为双精度?
谢谢!
【问题讨论】:
1.789232E-05
是一个例子吗?在这种情况下,这不是“无符号字符”,而是一个字符串。您可能想阅读问题“困惑如何在 C++ 中使用 strtod() 从字符串转换为双精度”[***.com/q/5687269/139746]
exponential char
是什么? oO
或者这个问题:***.com/questions/1710447/…
@PascalCuoq 这是提取到文本文件的内容。所以我假设它是一个字符串格式。但是,它是制造商提供的我的代码中的无符号字符格式。
那么unsigned char *
到char *
的转换有问题吗?
【参考方案1】:
你可以尝试使用 atof 将 char 转换为 double ,至于将 double 表示为 char 我建议你使用 char* 来存储转换后的 double。
来自 msdn 的 atof 链接:http://msdn.microsoft.com/en-us/library/hc25t012%28v=vs.71%29.aspx
【讨论】:
有没有关于我如何使用这种转换方法的例子?如果你给我看一些,我会很有帮助的。 :) 你看过链接了吗?你应该看看链接。 请注意:如果您正在为 Microsoft 编程,请使用 TCHAR 版本_tstof
。这样,如果您编译为 unicode,它将自动转换为 UNICODE。它实际上适用于所有 C 字符串函数:始终查找 _t
版本的 C 函数
@cha 仅当类型是那些 Microsoft 类型之一时才有意义(例如 CHAR
或 LPCTSTR
)。如果在 OP 的问题中是 unsigned char
,最好坚持使用 atof
。
OP 在标签中提到了 MFC,这是我的注释。【参考方案2】:
“指数形式”并不意味着任何具体的东西。如果数据 是 8 位的,它可能是 G.711 格式,A-Law 或 μ-定律。根据哪一个,您必须使用不同的 转换例程。 (在这两种情况下,8 位格式都是 1 位 符号、3 位指数和 4 位尾数。)
【讨论】:
以1.789232E-05
为例,在OP的问题中,我认为尾数超过4位。
@MrLister 是的。他的问题确实不是很清楚。但是,您知道哪些其他“指数格式”适合一个字节? (G.711 格式根本没有负指数,因为它们将 13 或 14 位整数转换为 8 位指数格式,但会损失精度。)以上是关于将 char 转换为 double的主要内容,如果未能解决你的问题,请参考以下文章