我必须将 2 个 DWORD、IP 地址和网络掩码转换为 CDIR 格式...所以我有 2 个 DWORD 对应于 1.1.1.1 和 255.255.255.255,我想提出字符串 1.1.1.1/32
对此有何想法?
谢谢
给出条件变量的规范示例
pthread_mutex_lock(&count_mutex);
pthread_cond_wait(&count_threshold_cv, &count_mutex);
Run Code Online (Sandbox Code Playgroud)
然后我可以从另一个线程发送一个信号,这个线程将继续.
但是我没有看到只是尝试锁定互斥锁有什么问题,如果锁定被执行,那么线程将等待互斥锁被释放.
这种方法唯一的问题是持续轮询吗?
谢谢
编辑:在采取adivce后,我重新安排了参数和类型.但是当我现在调用digest()函数时,应用程序崩溃了吗?任何想法都出错了?
const std::string message = "to be encrypted";
unsigned char* hashMessage;
SHA256::getInstance()->digest( message, hashMessage ); // crash occurs here, what am I doing wrong?
printf("AFTER: n"); //, hashMessage); // line never reached
Run Code Online (Sandbox Code Playgroud)
我在C++中使用SHA256算法的开源实现.我的问题是理解如何传递我的字符串的unsigned char*版本,以便它可以被散列?
这是一个函数,它接受我的字符串的unsigned char*版本:
void SHA256::digest(const std::string &buf, unsigned char *dig) {
init();
update(reinterpret_cast<const unsigned char *>(buf.c_str()), static_cast<unsigned int>(buf.length()));
final();
digest(dig);
}
Run Code Online (Sandbox Code Playgroud)
如何将我的字符串(我想要散列)转换为unsigned char*?
当我打印出字符串内容时,我所做的以下代码会导致运行时错误:
const std::string hashOutput;
char message[] = "to be encrypted";
printf("BEFORE: %s bb\n", hashOutput.c_str());
SHA256::getInstance()->digest( hashOutput, reinterpret_cast<unsigned char *>(message) );
printf("AFTER: %s\n", hashOutput.c_str()); // …
Run Code Online (Sandbox Code Playgroud) 今天就出现了,所以我想我会把它扔给社区.
一位同事编写了以下代码(或多或少):
#include <algorithm>
double chop(double x) {
return std::max(0, x);
}
Run Code Online (Sandbox Code Playgroud)
但是这甚至都没有编译,因为它std::max
希望它的两个参数具有完全相同的类型.我相信这是如此,它可以采取一对引用并返回一个引用,如果你在用户定义的类型上调用它,很可能是你想要的.很公平.
当然,修复是使用std::max(0.0, x)
.
现在忍受我一会儿,因为我撒了谎.我的同事实际写的是这样的:
// Included from a very old header file written by someone long gone
template<class T1, class T2>
inline T1 myMax(T1 x, T2 y) {
return (x < y) ? y : x;
}
double chop(double x) {
return myMax(0, x);
}
Run Code Online (Sandbox Code Playgroud)
这编译!但它产生了相当令人惊讶的结果,x等于0.25.我不确定他找到问题需要多长时间,甚至在找到问题之后,他不得不问为什么它不起作用.
我的回答是(a)使用0.0而不是0(修正了bug),以及(b)使用std::max
而不是myMax
(当你考虑它时,它的行为非常可怕).
但他想知道为什么会这样.我的意思是,他可以写0 + x
或0 * x
或者0 - x
,为什么不 …