我正在尝试编写字符串\文件熵计算器。这是我写的代码,但它不起作用:
double entropy(char* buf)
{
int* rgi = (int*)_alloca(256);
int* pi = rgi + 256;
double H = 0.0;
double cb = sizeof(buf);
for (int i = sizeof(buf); --i >= 0;)
{
rgi[buf[i]]++;
}
while (--pi >= rgi)
{
if (*pi > 0)
{
H += *pi * log2(*pi / cb);
}
}
return -H / cb;
}
我做错了什么?
答案 0 :(得分:3)
我认为你有4个问题
1)永远不会初始化分配的内存
2)分配的内存太少,因为每个整数只分配1个字节
3)<div id="sorttable">
使用char
可能会遇到问题,因为buf
可能会签名
4)sizeof(buf)给出了char指针的大小,但不缓冲区的大小
除此之外,我认为你通过向后迭代使代码过于复杂。
试试这个:
char