ich persönlich eine Funktion show_bytes wie folgt verwenden:Wie Bytes float zeigen
#include<stdio.h>
typedef char *byte_pointer;
void show_bytes (byte_pointer x)
{
int length = sizeof(float);
int i;
for(i = 0;i <length;i++)
{
printf("%2x",*(x+i));
printf("\n");
}
}
int main()
{
float obj;
printf("please input the value of obj:");
scanf("%f",&obj);
show_bytes((byte_pointer) &obj);
}
wenn i Eingang 120,45, die
0x42f0e666 sein sollteplease input the value of obj:120.45
66
ffffffe6
fffffff0
42
, warum so viele 'f' vor dem e6 und f0, während ich% .2x verwende.
Es scheint, dass für Ihren Compiler 'char' * signiert * ist. Denken Sie nun darüber nach, wie diese Informationen in einem Fall angewendet werden, in dem Sie * unsignierte * Daten drucken möchten. –
Wenn Sie "Bytes" benötigen (d. H. Nicht "Zeichen"), verwenden Sie nicht "char". Benutze stattdessen 'uint8_t'. – ThiefMaster
Ja, ich ersetze Char mit unsigned char, es stellt sich heraus, dass die Antwort ich will .. Vielen Dank. –