zoukankan      html  css  js  c++  java
  • 牛客网-华为-2020届校园招聘上机考试-1

    题目描述
    在计算机系统内存在两种字节序:大端和小端
    大端(Big_Endian)就是高位字节排放在内存的低地址端,低位字节排放在内存的高地址端。
    小端(Little_Endian)就是低位字节排放在内存的低地址端,高位字节排放在内存的高地址端。

    以数字0x12345678为例:
    大端(Big_Endian)低地址到高地址依次为“0x12 | 0x34 | 0x56 | 0x78”
    小端(Little_Endian)低地址到高地址依次为“0x78 | 0x56 | 0x34 | 0x12”

    现定义一种字符编码,其编码格式如下:
    9个字符为一个编码组
    第一个字符表示后续8个字符的字节序(字符‘0’表示小端,字符‘1’表示大端)
    后续8个字符,每个字符代表一个字节
    编码解析之后字符串采用大端模式

    输入描述:
    第一行为数字N,表示后续输入的字符串有多少个编码组
    第二行为编码字符串
    输出描述
    输出为一行,包含N个编码组解析结果(大端模式),每个结果以一个空格分隔,行末无空格。

    示例1
    输入
    2
    0abcdefgh1abcdefgh
    输出
    hgfedcba abcdefgh

    1.思考

    • 当每个编码组以‘0’开头,则之后8个字符串逆序输出;
    • 当每个编码组以‘1’开头,则之后8个字符串顺序输出;
    • 注意输出的空格和换行符。

    2.实现

    #include <iostream>
    #include <string>
    #include<algorithm>
    using namespace std;
    
    string LittleEndian(string& s)
    {
    	int len = s.size();
    	string res;
    	res = s;
    	for (int i = 0; i < len; i++){
    		res[i] = s[len - 1 - i];
    	}
    	return res;
    }
    
    int main(){
    	int n;
    	string input, res;
    
    	while (cin>>n>>input){
    		int f;
    		string s;
    		for (int i = 0; i < n; i++){
    			f = input[i * 9] - '0';
    			s = input.substr(i*9+1, 8);
    			if (f == 0){
    				res = LittleEndian(s);
    				cout << res;
    			}
    			else{
    				cout << s;
    			}
    			if (i < n-1){
    				cout << " ";
    			}
    			else{
    				cout << endl;
    			}
    		}
    	}
    
    	return 0;
    }
    
  • 相关阅读:
    大规模特征构建实践总结
    大数据分析在新型智慧能源建设中的应用
    非局部神经网络,打造未来神经网络基本组件
    异常处理机制
    myecplise debug时怎么看源码 和怎么导入项目中框架的源码
    mybatis 学习的总结
    oracle学习总结2(pl/sql 游标 异常的处理 存储过程和函数 包 触发器)
    Oracle学习的总结
    Oracle 11 g 2R安装以及sql Development
    SpringMVC源代码学习(六)HanderMapping详解
  • 原文地址:https://www.cnblogs.com/xuyy-isee/p/10611120.html
Copyright © 2011-2022 走看看