字节查看器

其中,int型、float型、double型数据按先输出高位字节,从高位字节向低位字节输出的形式。字符串型则直接按字符顺序逐字节输出。
输入
有4行,第1行是一个整数,以int型数据存储。第2行是一个带小数点的实数,以double型存储,第2行是一个带小数点的实数,以double型存储,第3行是长度为不超过100字符的英文字符串,以char型数组存储。
输出

输出4组结果每组输出2行。

第1组:第1行输出int型整数本身,第2行按字节输出该int型数据4组十六进制值。

第2组:第1行输出float型实数本身,第2行按字节输出该实数的4组十六进制值。

第3组:第1行输出double型实数本身,第2行按字节输出该实数的8组十六进制值。

第4组:第1行输出字符串本身,第2行按字节输出该字符串的每个字符的十六进制值。

每组数据的2行输出之后有空行。每两个十六进制值之间用空格分隔。

例如:

输入:
123456
123.456
123.456
123456 and 123.456 is a number!
输出:

123456

00 01 E2 40

123.456001

42 F6 E9 79

123.456000

40 5E DD 2F 1A 9F BE 77

123456 and 123.456 is a number!

31 32 33 34 35 36 20 61 6E 64 20 31 32 33 2E 34 35 36 20 73 20 61 20 6E 75 6D 62 65 72 21

#include <stdio.h>
#include <string.h>

int main()
{
    int num;
    float fnum;
    double dnum;
    char str[100];    
    scanf("%d", &num);
    scanf("%f", &fnum);
    scanf("%lf\n", &dnum);     //\n消除换行对字符输入的影响
    gets(str);                //读取字符数组
    printf("%d\n", num);
    unsigned char *p = (unsigned char *)&num;    //定义一个无符号字符型的指针变量
    for (int i = sizeof(num)-1; i>=0; i--) {
        printf("%02X ", *(p + i));                //指针移动
    }
    printf("\n\n");
    printf("%f\n", fnum);
    p = (unsigned char *)&fnum;
    for (int i = sizeof(fnum)-1; i>=0; i--) {
        printf("%02X ", *(p + i));
    }
    printf("\n\n");
    printf("%lf\n", dnum);
    p = (unsigned char *)&dnum;
    for (int i = sizeof(dnum)-1; i >=0; i--) {
        printf("%02X ", *(p + i));
    }
    printf("\n\n");
    printf("%s\n", str);
    for (int i = 0; i<strlen(str); i++) {
        printf("%02X ",str[i]);
    }
    printf("\n\n");

    return 0;
}
 
 
  • 9
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值