J'ai deux variables: une float
nommée diff
avec une valeur comme 894077435904.000000
(pas toujours seulement avec zéro dans la partie décimale) et un char[32]
qui est la résultat d'un calcul double-sha256. J'ai besoin de faire une comparaison entre eux (if(hash < diff) { //do someting }
), mais pour cela, j'ai besoin de convertir l'un au type de l'autre.Conversion du flotteur char [32] (ou vice-versa) en C
Existe-t-il un moyen d'accomplir ceci? Par exemple, la conversion du float
à un char*
(et en utilisant strcmp
faire la comparaison) ou char*
à float
(et en utilisant l'approche ci-dessus - s'il est même possible, compte tenu de la char*
est de 256 bits ou 32 octets)?
J'ai essayé de convertir float
à char*
comme ceci:
char hex_str[2*sizeof(diff)+1];
snprintf(hex_str, sizeof(hex_str), "%0*lx", (int)(2*sizeof diff), (long unsigned int)diff);
printf("%s\n", hex_str);
Quand j'ai diff=894077435904.000000
j'obtenir hex_str=d02b2b00
. Comment puis-je vérifier si cette valeur est correcte? En utilisant this converter j'obtiens des résultats différents.
Vous devez faire le calcul pour convertir la difficulté à une cible, puis vous devez comparer la cible au résultat de hachage (probablement avec 'memcmp'). Voir [ici] (https://en.bitcoin.it/wiki/Difficulty) pour en savoir plus sur la façon de convertir la difficulté en cible. –
Je fais déjà ce calcul (je lis les bits de l'interface json-rpc, je les convertis en 'unsigned int' et je passe à la fonction listée dans le lien que vous publiez). Maintenant, j'ai juste besoin de comparer la difficulté avec le hachage, je suppose. –
D'accord. Utilisez 'memcmp' pour cela. Si le hash est inférieur à la cible, vous gagnez. –