Sử dụng scanf, mỗi số gõ vào, tôi muốn chương trình của tôi để in ra hai dòng: ví dụchuyển đổi int nổi để hex
byte order: little-endian
> 2
2 0x00000002
2.00 0x40000000
> -2
-2 0xFFFFFFFE
-2.00 0xC0000000
tôi có thể lấy nó để in ra 2 trong hex nhưng tôi cũng cần một phao và tất nhiên tôi không thể scanf như một khi tôi cần phải quét như một int
Nếu tôi cast như một phao khi tôi cố gắng printf tôi nhận được một số không. Nếu tôi quét như một phao tôi có được kết quả chính xác. Tôi đã cố gắng chuyển đổi int sang một float nhưng nó vẫn đi ra như số không.
đây là đầu ra của tôi cho đến nay
Int - float - hex
byte order: little-endian
>2
2 0x000002
2.00 00000000
nó trông giống như tôi đang chuyển đổi sang một phao tốt tại sao sẽ không nó in như một hex? nếu tôi quét trong như một phao tôi nhận được đại diện hex chính xác như ví dụ đầu tiên. điều này phải là một cái gì đó đơn giản. tôi cần phải quét trong khi một số thập phân ghi nhớ tôi đang chạy này trong Cygwin
đây là những gì tôi có cho đến nay ..
#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;
}
Bạn có thể vui lòng cho chúng tôi biết một số mã không? –
xin lỗi. được đăng – Steller
Không in số không cho tôi khi tôi nhập 1 làm đầu vào. Bạn đang cố gắng đạt được điều gì? Số đầu vào của bạn là gì? –