#include <stdlib.h>
int main()
{
float f;
scanf("%f", &f);
char ch1, ch2, ch3, ch4;
ch4 = *(char *)(&f);
ch3 = *((char *)(&f) + 1);
ch2 = *((char *)(&f) + 2);
ch1 = *((char *)(&f) + 3);
printf("%02x%02x%02x%02x", ch1, ch2, ch3, ch4);
return 0;
}
可以用union 的特性输出float的16进制。
#include <stdio.h>
typedef union t
{
float flt;
int num;
} TT;
int main(void)
{
TT t;
scanf("%f", &t.flt);
printf("%X", t.num);
return 0;
}
【以下回答由 GPT 生成】
# 读取输入
a = float(input())
# 将浮点数转换为字节串
bytes = a.to_bytes(4, byteorder='big')
# 将字节串转换为十六进制字符串
hex_str = ''.join(format(byte, '02x') for byte in bytes)
# 输出结果
print(hex_str)
解析: 1. 首先,我们通过input()函数读取输入的浮点数a。 2. 接下来,我们使用to_bytes()
函数将浮点数a转换为4个字节的字节串。to_bytes()
函数的第一个参数指定了字节数,这里是4,第二个参数指定了字节序,这里选择了big-endian(高位字节存储在高地址单元)。 3. 然后,我们通过format()
函数将每个字节转换为两位的十六进制字符串,并使用join()
函数将它们连接起来,得到一个4位的十六进制字符串。 4. 最后,我们使用print()函数输出结果。
【相关推荐】