首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何将字符数组转换为分贝

如何将字符数组转换为分贝
EN

Stack Overflow用户
提问于 2013-12-13 17:22:31
回答 2查看 137关注 0票数 2

我的代码中有一些问题:

代码语言:javascript
复制
UINT8 PoWerSignal = MyScanResults.signal;
char Signal[8];

sprintf(Signal, "%d", PoWerSignal);

float decibel = 0;
decibel = 10 * log(Signal);

dbgwrite("SIGNAL:     ");
_dbgwrite(decibel);

有一个错误:

错误:“logf”参数1的不兼容类型

我不知道怎么解决这个问题,也不知道这意味着什么。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-12-13 17:41:40

您正在将一个char数组(在这里称为"string“:Signal,存储在PoWerSignal中的值的字母数字表示)传递给log()最有可能的不是期望这样的输入,而是一个数字。

您可能希望传递函数log()的数值表示形式如下:

代码语言:javascript
复制
#include <stdio.h> /* To have the prototypes foe the printf family of functions. */

...

UINT8 PoWerSignal = MyScanResults.signal;

char Signal[8] = "";
snprintf(Signal, sizeof(Signal), "%d", PoWerSignal);

float decibel = 10. * log(PoWerSignal);

...

另一方面,函数_dbgwrite()似乎需要一个char数组。为此,使用snprintf() out decibel创建一个“字符串”以传递给它,如下所示:

代码语言:javascript
复制
...

char descibel_str[64] = "";
snprintf(decible_str, sizeof(decibel_str), "%f", (double) decibel);

dbgwrite("SIGNAL:     ");
_dbgwrite(decibel_str);

注意snprintf()而不是sprintf()的用法:这个“转换”函数的前一个版本确实注意到没有溢出目标缓冲区,即存储传递的参数的字母数字表示。这是很容易发生的,而且会引起不明确的行为。

票数 1
EN

Stack Overflow用户

发布于 2013-12-13 17:25:31

看起来你在发送一个坏数据类型(信号)。也许这应该是一个浮点数或无符号的int,而不是字符数组?"char“表示一串文本,您不能将其作为一个数字来操作。

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

https://stackoverflow.com/questions/20572371

复制
相关文章

相似问题

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