Advertisement
Guest User

Untitled

a guest
Feb 24th, 2020
86
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 0.73 KB | None | 0 0
  1. uint64_t share_to_target(double diff)
  2. {
  3. int i, shift = 29;
  4. unsigned char targ[32];
  5. for (i=0; i<32; i++)
  6. targ[i]=0;
  7. double ftarg = (double)0x0000ffff / diff;
  8. while (ftarg < (double)0x00008000) {
  9. shift--;
  10. ftarg *= 256.0;
  11. }
  12. while (ftarg >= (double)0x00800000) {
  13. shift++;
  14. ftarg /= 256.0;
  15. }
  16. uint32_t nBits = (int)ftarg + (shift << 24);
  17. shift = (nBits >> 24) & 0x00ff;
  18. nBits &= 0x00FFFFFF;
  19. targ[shift - 1] = nBits >> 16;
  20. targ[shift - 2] = nBits >> 8;
  21. targ[shift - 3] = nBits;
  22. uint64_t starget = * (uint64_t *) &targ[24];
  23. return (starget);
  24. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement