En utilisant scanf, chaque numéro tapé, je voudrais que mon programme impression sur deux lignes: par exempleconvertir int flotter en hexadécimal
byte order: little-endian
> 2
2 0x00000002
2.00 0x40000000
> -2
-2 0xFFFFFFFE
-2.00 0xC0000000
je peux l'obtenir pour imprimer le 2 dans l'hexagone mais j'ai aussi besoin d'un flotteur et bien sûr je ne peux pas scanf comme un quand j'ai besoin de scanner aussi comme un int
Si je lance comme un flotteur lorsque j'essaie d'imprimer, je reçois un zéro. Si je scanne comme un flotteur je reçois la bonne sortie. J'ai essayé de convertir l'int en un flotteur mais il sort toujours comme zéro.
voici ma sortie jusqu'à
Int - float - hex
byte order: little-endian
>2
2 0x000002
2.00 00000000
on dirait que je suis en train de convertir à un flotteur bien pourquoi coutume il imprimer comme un hexagone? Si je scanne en tant que flotteur, j'obtiens la représentation hexadécimale correcte comme le premier exemple. cela devrait être quelque chose de simple. Je ne dois numériser en tant que décimal garder à l'esprit je cours ceci dans Cygwin
voici ce que j'ai jusqu'à présent ..
#include <stdio.h>
#include <stdlib.h>
int main(int argc, char *argv[])
{
int HexNumber;
float convert;
printf("Int - float - hex\n");
int a = 0x12345678;
unsigned char *c = (unsigned char*)(&a);
if (*c == 0x78)
{
printf("\nbyte order: little-endian\n");
}
else
{
printf("\nbyte order: big-endian\n");
}
printf("\n>");
scanf("%d", &HexNumber);
printf("\n%10d ",HexNumber);
printf("%#08x",HexNumber);
convert = (float)HexNumber; // converts but prints a zero
printf("\n%10.2f ", convert);
printf("%#08x", convert); // prints zeros
return 0;
}
Pouvez-vous s'il vous plaît nous montrer du code? –
désolé. its posted – Steller
N'imprime pas zéro pour moi quand j'entre 1 comme entrée. Qu'essayez-vous d'accomplir? Quel est votre numéro d'entrée? –