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

时间:2013-12-13 17:22:32

标签: c

我的代码中存在一些问题:

UINT8 PoWerSignal = MyScanResults.signal;
char Signal[8];

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

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

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

有一个错误:

  

错误:'logf'

的参数1的类型不兼容

我不知道如何解决这个或它意味着什么。

2 个答案:

答案 0 :(得分:1)

看起来你发送的是错误的数据类型(信号)。也许这应该是float或unsigned int而不是字符数组? “char”表示一串文本,您不能以数字形式对其进行操作。

答案 1 :(得分:1)

您正在将char数组(也称为“字符串”,此处为Signal,<{> 1}}中存储的值的字母数字表示形式传递给{ {1}},很可能期望这样的输入,但是数字。

您可能希望传递函数PoWerSignal数字表示形式,如下所示:

log()

另一方面,函数log()似乎期望#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()

关于decibel而不是... char descibel_str[64] = ""; snprintf(decible_str, sizeof(decibel_str), "%f", (double) decibel); dbgwrite("SIGNAL: "); _dbgwrite(decibel_str); 的使用的注意事项:此“转换”函数的前一版本确实不会溢出目标缓冲区,即字母数字存储传递的参数的表示。这可以轻松地发生并且会引起不确定的行为。