Convertir de flotter à QByteArray
Est-il un moyen rapide de convertir un float valeur d'un octet sage (hex) représentation dans un QByteArray
?
Ont fait similaire avec memcpy()
avant à l'aide de tableaux, mais cela ne semble pas fonctionner aussi bien avec QByteArray
.
Par exemple:
memcpy(&byteArrayData,&floatData,sizeof(float));
Peut aller dans l'autre sens un peu fine à l'aide de:
float *value= (float *)byteArrayData.data();
Suis-je à la mise en œuvre de ce mal ou est-il un meilleur moyen de le faire à l'aide de Qt?
Grâce
OriginalL'auteur radix07 | 2010-05-05
Vous devez vous connecter pour publier un commentaire.
De la QByteArray De Référence De Classe page:
Initialiser un
QByteArray
avec le contenu de la mémoire de la flotte qui y est stockée.Si vous en avez déjà un et je veux juste ajouter les données:
Devrait le faire aussi bien.
Pour aller dans l'autre sens, il vous suffit d'effectuer l'opération inverse:
OriginalL'auteur ereOn
Je ne suis pas sûr de ce que vous voulez exactement.
Farcir la représentation binaire dans un QByteArray vous pouvez utiliser ceci:
Pour obtenir une représentation hexadécimale du flotteur, vous pouvez ajouter ceci:
c'est discutable. Dans cet exemple, il n'a pas d'importance, je l'ai utilisé, afin de ne pas tapez le long de la réinterpréter en fonte.
Et si
f
a été const ? Vous auriez fait disparaître les constness toutreinterpret_cast<>
aurait généré une erreur de compilation. Être paresseux avec les touches jamais paie.Encore une fois, il n'a pas d'importance dans un exemple. I, à l'exception se respecte programmeur C++ pour connaître les implications des différents opérateurs de cast. Mais puisque vous insistez... changé de réinterpréter le cast pour un const char *.
Je suis désolé si vous en quelque sorte senti offensé: n'était pas destiné. Nous ne pouvons pas supposer que les OP sait faire la différence entre le C et le C++ styles de fonte. Il pourrait juste copier-coller ce qui est un exemple simple de code de production, et de l'attendre à rencontrer des problèmes plus tard. Vous avez la réponse est évidemment correct, mais maintenant c'est correct et affiche les bonnes pratiques ! 😉 Merci pour l'édition.
OriginalL'auteur CMircea