2009-10-04 3 views
1

J'ai un programme qui est censé prendre des valeurs et les imprimer. Mais quand l'utilisateur entre quelque chose comme 12, (C dans HEX) le programme imprime une lettre étrange, que je pense être la représentation en ASCII. Y a-t-il un moyen de faire en sorte que ces numéros soient sauvegardés en tant que nombres bruts? Je fais l'entrée et la sortie à travers une bibliothèque externe, donc je ne sais pas si cela a quelque chose à voir avec ça.Je ne comprends pas comment Assembly fonctionne avec ASCII?

Répondre

2

Il existe plusieurs façons de stocker un numéro à l'intérieur d'un ordinateur. Les principaux sont:

  • En tant que nombre binaire natif. Le nombre 123 sera stocké en tant qu'octets: 0x7b, avec un remplissage nul si vous utilisez un entier supérieur à un octet. Zéro-padding pourrait être sur la gauche (machine big-endian) ou la droite (machine little-endian).
  • En tant que chaîne. 123 sera stocké comme 0x31 32 33, en supposant ASCII/Latin1/UTF-8. Il peut y avoir soit un champ de longueur en premier (stocké en tant que nombre binaire natif) ou un octet zéro (0x00) après pour indiquer où la chaîne se termine.
  • BCD. 123 seront stockées sous forme de 0x01 23. Les octets peut également être stockée dans l'ordre petit-boutiste, comme 0x23 01.

Vous aurez besoin de comprendre (espérons-dit la documentation) sur quel format votre bibliothèque d'entrée et veut quel format votre bibliothèque de sortie fournit, et convertissez entre eux dans votre programme. Le nom général de cette conversion est "conversion binaire-décimale"