Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/158.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ Litecoin/比特币如何在C+中根据难度划分uint256目标值+;_C++_Math_Hex_Bitcoin - Fatal编程技术网

C++ Litecoin/比特币如何在C+中根据难度划分uint256目标值+;

C++ Litecoin/比特币如何在C+中根据难度划分uint256目标值+;,c++,math,hex,bitcoin,C++,Math,Hex,Bitcoin,我几乎完成了在js中实现litecoin/bitcoin miner只是为了好玩,我只是不知道如何找到目标。正如docs所说,这是最大/难度,但如果难度是(例如)62,我如何在0x00000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF和62之间执行除法 所以我从litecoin钱包源代码中得到unit256类,但这个类没有除法运算符。所以我将uint256转换为在uint256类中实现的doub

我几乎完成了在js中实现litecoin/bitcoin miner只是为了好玩,我只是不知道如何找到目标。正如docs所说,这是最大/难度,但如果难度是(例如)62,我如何在0x00000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF和62之间执行除法

所以我从litecoin钱包源代码中得到unit256类,但这个类没有除法运算符。所以我将uint256转换为在uint256类中实现的double

double getdouble() const
{
   double ret = 0.0;
   double fact = 1.0;
   for (int i = 0; i < WIDTH; i++) {
       ret += fact * pn[i];
       fact *= 4294967296.0;
   }
   return ret;
}
double getdouble()常量
{
双ret=0.0;
双重事实=1.0;
对于(int i=0;i
但现在我需要将这个巨大的双精度字符串转换为十六进制字符串。据我所知,这个字符串将代表miner的目标。或者我需要这个双变量转换回uint256,并从中获取十六进制。有什么建议吗?谢谢

所以解决方案很简单:

void setdouble(double val)
{
    double ret = val;
    double fact = 1.0;
    for (int i = 0; i < WIDTH; i++) {
        double a = ret / fact;
        pn[i] =  (uint32_t)a;
        fact *= 4294967296.0;
    }
}
void setdouble(双值)
{
双ret=val;
双重事实=1.0;
对于(int i=0;i
你不能走那条路。难度没有足够的精度来计算目标。你只能从目标到困难。你的工作单元应该包括目标。好的,我写的miner使用stratum协议,stratum不给我十六进制格式的目标,他们只给我当前的难度。那我怎么才能找到目标呢?谢谢