Dans Smalltalk (ou au moins Squeak et Pharo), existe-t-il un moyen portable d'obtenir les octets qui forment un entier, en commençant par l'octet le plus significatif suivi du suivant, et ainsi de suite, indépendamment de l'ordre des octets différences entre les plates-formes?Comment obtenir les octets qui composent un nombre entier?
Répondre
1 to: (31 highBitOfMagnitude) do: [:i | Transcript show: (31 bitAt: i)].
Ou quelque chose dans ce sens. Désolé, j'ai lu des bits et non des octets. Vous devez donc regrouper les bits en octets. En supposant que vous voulez dire un octet = 8 bit cela devrait être "faisable"
Vous savez que cela peut être beaucoup d'octets? Entiers peuvent être de taille arbitraire, avec SmallIntegers comme des objets directs de 31 bits (dans une image 32 bits)
Essayez digitAt: et digitAt: mis ::
(333 digitAt: 1) hex '4D'
Robert a raison: digitAt: idx récupère un octet, en commençant par un index de 1 (comme d'habitude) pour l'octet faible. digitLength vous donne le nombre de chiffres.
donc d'énumérer l'utilisation:
n digitLength downTo:1 do:[:idx | do something with (n digitAt:idx)]
Je ne sais pas, s'il y a une convention sur ce qui est retourné pour un grand nombre négatif, car Smalltalks ont tendance à utiliser la représentation de la valeur de signe pour LargeInts mais le complément de 2 pour SmallInts. Donc vous devrez peut-être vérifier cela. Mise en garde: pour moi, digitAt: est un peu un mauvais nom - j'ai tendance à l'associer à "decimal-digit-at", ce qui est trompeur.
Cela dépend de la façon dont votre numéro est représenté. Si vous voulez juste obtenir les chiffres du nombre que vous pourriez faire quelque chose comme
12345 printString do: [ :c | "Your code to manipulate the digits here" ]
Partagez et appréciez.
- 1. Conversion d'un nombre entier en octets
- 2. Comment puis-je obtenir les ID des lignes qui composent une requête GROUP BY ... HAVING?
- 3. Comment transformer les octets en nombre (IEEE754 en nombre) Actionscript
- 4. Comment diviser un nombre entier en binaire à 2 octets? Étant donné
- 5. Afficher les chiffres dans un nombre entier
- 6. Trouver les fichiers qui composent une classe Ruby
- 7. Comment obtenir le nombre exact de caractères multi-octets?
- 8. Comment détecter si un nombre donné est un nombre entier?
- 9. GROOVY Comment couper un nombre aléatoire en un nombre entier
- 10. Comment interpréter les données binaires comme un nombre entier?
- 11. Comment entrer un nombre entier de l'utilisateur?
- 12. Étant donné un nombre décimal, recherchez le plus petit multiplicateur entier qui donne un résultat entier
- 13. 8 octets Entier avec Doctrine et PHP
- 14. sun.misc.Unsafe: Comment obtenir les octets d'une adresse
- 15. Écrire un entier de 2 octets dans un flux?
- 16. Obtenir tous les enregistrements qui contiennent un nombre
- 17. convertir un nombre entier dans un tableau
- 18. entier ne constante « pas réduit à un nombre entier »
- 19. Dans ORACLE, Comment déterminer les champs qui composent les clés primaires des tables ou des vues?
- 20. vb.net convertir un nombre exposant à un nombre entier
- 21. sortie nombre entier binaire brut en php
- 22. Formulaire d'accès Membres avec un nombre entier?
- 23. random.randint pour un nombre non entier? [Python]
- 24. Comment écrire un entier de deux octets en hexadécimal dans un fichier binaire en utilisant C
- 25. Convertit un entier signé 16 bits en 2 octets?
- 26. Quel type pour un entier de plus de 4 octets?
- 27. C# - Reliure TextBox à un nombre entier
- 28. Comment compter le nombre de bits zéro dans un entier?
- 29. String.Format() fraction nombre entier
- 30. Affichage zéros sauf si un nombre entier
Puisque vous demandez un entier il n'y a pas de différence de plate-forme, MSB et LSB est toujours le même – mathk