7-15 位模式(dump_bits)---PTA实验C++

一、题目描述

为方便调试位运算相关程序,先做个展现位模式的小工具。

建议参照以下接口实现:


  
// 利用函数重载特性:
string dump_bits(char x);
string dump_bits(short x);
string dump_bits(int x);
string dump_bits(long long x);

// 或用函数模板实现:
template<typename T>
string dump_bits(T x);

先导题:字节解析(需要读入十六进制数据)、字节序。

输入规格
  • 由若干组测试数据构成,格式自由,处理至EOF为止。
  • 每组开头是i8 i16 i32 i64四种类型之一,之后分别有1/2/4/8个字节的数据。
  • 数据以小端序导出(参考字节序题目)。
  • 数据间有长度不定的空白符,每组数据可能跨越多行。目的是演示输入流的性质,无需特殊处理。
输出规格
  • 每组数据以大端序输出其各字节的位模式,每字节8位,字节间以下划线分隔。
样例输入
i8 88
        i16          ab             cd
 i32 01      23
   45   67  i64
01 23      45 67 89   ab CD Fe
样例输出
10001000
11001101_10101011
01100111_01000101_00100011_00000001
11111110_11001101_10101011_10001001_01100111_01000101_00100011_00000001
样例解释
  • 第1组:共1个字节88,对应0x88
  • 第2组:共2个字节ab cd,对应0xCDAB
  • 第3组:共4个字节01 23 45 67,对应0x67452301
  • 第1组:共8个字节01 23 45 67 89 ab CD Fe,对应0xFECDAB8967452301ULL

二、完整C++代码实现

#include<iostream>
#include<cstdint>
using namespace std;
string parse_byte(char hi){
    string ss="";
    if(hi>='0'&&hi<='9'){
        hi=hi-'0';

    }else if(hi>='a'&&hi<='f'){
        hi=hi-'a'+10;
    }else if(hi>='A'&&hi<='f'){
        hi=hi-'A'+10;
    }
    for(int i=3;i>=0;i--){
        ss+=(hi>>i)&1?'1':'0';
    }
    return ss; // TODO
}
string dump_bits(string x){
string s8;
s8+= parse_byte(x[0])+parse_byte(x[1]);

   return s8;
}

int main(){
    string type;
    while(cin>>type){
        if(type=="i8"){
            string x;
            cin>>x;
            string result=dump_bits(x);
            cout<<result<<endl;
        }else if(type=="i16"){
            string x;
            string result;
            string s[2];
            for(int i=0;i<2;i++){
                cin>>x;
                s[i]=dump_bits(x);
            }
            result+=s[1]+"_"+s[0];
            cout<<result<<endl;

        }else if(type=="i32"){
            string x;
            string result;
            string s[4];
            for(int i=0;i<4;i++){
                cin>>x;
                s[i]=dump_bits(x);
            }
            for(int i=3;i>=0;i--){
                if(i==0){
                    result+=s[i];
                }
                else{
                    result+=s[i]+"_";
                }
                
            }
            cout<<result<<endl;

        }else if(type=="i64"){
            string x;
            string result;
            string s[8];
            for(int i=0;i<8;i++){
                cin>>x;
                s[i]=dump_bits(x);
            }
            for(int i=7;i>=0;i--){
                if(i==0){
                    result+=s[i];
                }else{
                    result+=s[i]+"_";
                }
            }
            cout<<result<<endl;
            
        }

    }


}

三、测评详情

相关推荐

  1. 7-14 字节序(Endianness)---PTA实验C++

    2024-06-05 23:24:09       10 阅读
  2. 实验7-1-11 装箱问题(PTA

    2024-06-05 23:24:09       19 阅读
  3. 实验7-2-10 简易连连看(PTA

    2024-06-05 23:24:09       16 阅读
  4. PTA 6-7数合并

    2024-06-05 23:24:09       16 阅读
  5. PTA 7-229 sdut-C语言实验- 排序

    2024-06-05 23:24:09       33 阅读
  6. PTA——7-4 奇葩楼层 (15 分)

    2024-06-05 23:24:09       37 阅读
  7. PTA 7-18 蛇鸟 python

    2024-06-05 23:24:09       11 阅读
  8. PTA 7-223 sdut-C语言实验-求阶乘(循环结构)

    2024-06-05 23:24:09       39 阅读

最近更新

  1. 指向如此神奇:揭示Js函数this的10个惊人事实!

    2024-06-05 23:24:09       0 阅读
  2. k8s 使用 helm 文件部署 8.12.2 es 分角色集群

    2024-06-05 23:24:09       1 阅读
  3. 数据编码的艺术:sklearn中的数据转换秘籍

    2024-06-05 23:24:09       1 阅读
  4. android pdf框架-11,查看图片

    2024-06-05 23:24:09       1 阅读
  5. 深入探索:scikit-learn中递归特征消除(RFE)的奥秘

    2024-06-05 23:24:09       1 阅读
  6. 需求分析分类和层级、分析步骤

    2024-06-05 23:24:09       1 阅读
  7. js list to tree

    2024-06-05 23:24:09       1 阅读
  8. 02更新用户在线状态

    2024-06-05 23:24:09       1 阅读
  9. CSS魔法:link与@import的秘密较量

    2024-06-05 23:24:09       1 阅读
  10. 第12章:软件系统分析与设计

    2024-06-05 23:24:09       1 阅读

热门阅读

  1. c++模板进阶——特化

    2024-06-05 23:24:09       8 阅读
  2. 【WP|8】深入解析WordPress钩子函数

    2024-06-05 23:24:09       6 阅读
  3. 2024年6月-7月

    2024-06-05 23:24:09       8 阅读
  4. tomcat 配置ssl

    2024-06-05 23:24:09       8 阅读
  5. Android应用保活攻略

    2024-06-05 23:24:09       11 阅读
  6. 陪玩小程序都需要怎么做?

    2024-06-05 23:24:09       8 阅读
  7. 【Linux】GNU编译器基础-GDB

    2024-06-05 23:24:09       10 阅读
  8. VS_图片转换点云

    2024-06-05 23:24:09       8 阅读
  9. Python模块导入的写法

    2024-06-05 23:24:09       8 阅读