将 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 类型之一时才有意义(例如 CHARLPCTSTR)。如果在 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的主要内容,如果未能解决你的问题,请参考以下文章

如何将char*转换为wchar

如何将char数组转换为CString

C 将 char 转换为 char*

将 const char* 转换为 char*

为啥编译器试图将 char * 转换为 char? [关闭]

将 char[][] 转换为 char**?