EOJ 2822 内存显示

一个 int 类型变量或 double 类型变量在连续几个字节的内存中存放。读取数值时,当数值中包含小数点时类型为 double,否则类型为 int。将读入的数值存放在 int 类型变量或 double 类型变量中。以十六进制格式(a-f 字母采用小写形式)输出相应变量的连续的每个字节的值。

读入的数据保证能在一个 int 类型或 double 类型变量中正确存放。

注意:int 类型变量和 double 类型变量所占字节数以及一个变量的几个字节的存放顺序与所用计算机的体系结构和编译系统有关。

Input

每一行包含一个数值

Output

每行对应一个数据,每个字节后面都要输出一个空格。

Examples

Input
1
-1
0
3.14
0.0
-1.0
Output
01 00 00 00
ff ff ff ff
00 00 00 00
1f 85 eb 51 b8 1e 09 40
00 00 00 00 00 00 00 00
00 00 00 00 00 00 f0 bf
注意每行的最后都有一个空格


 
    
 1 #include <stdio.h>
 2 #include <stdlib.h>
 3 #include <string.h>
 4 void solveint(int n)
 5 {
 6     int c=sizeof(n);
 7     unsigned char* p=(unsigned char*)&n;
 8     while (c--)
 9         printf("%02x ",*p++);
10     printf("\n");
11 }
12 void solvedouble(double d)
13 {
14     int c=sizeof(d);
15     unsigned char* p=(unsigned char*)&d;
16     while (c--)
17         printf("%02x ",*p++);
18     printf("\n");
19 }
20 int main()
21 {
22     char s[31];
23     while (scanf("%s",s)!=EOF)
24          if (strchr(s,'.')==0)  solveint(atoi(s));
25          else solvedouble(atof(s));
26      return 0;
27 }

 

输入,判断数是int类型还是double类型

int字节数: sizeof(int)
 开始字节地址:&n
 double字节数: sizeof(double)
 开始字节地址:&d

&n的类型为int*

&d的类型为double*

为了按字节逐个输出,都强制转换成
unsigned char*类型,小写字母表示的十六
进制输出格式控制符为%02x


转载于:https://www.cnblogs.com/Jiiiin/p/8615794.html

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值