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;
    }
    
  • 相关阅读:
    Spring中常用的配置和注解详解
    SpringBoot中的常用配置
    Maven项目创建问题
    hibernate缓存:一级缓存和二级缓存
    Hibernate标准查询
    Hibernate中Hql的查询
    Hibernate中对象的三种状态
    Hibernate中使用load和get加载的区别
    Spring增强
    Spring代理模式
  • 原文地址:https://www.cnblogs.com/xuyy-isee/p/10611120.html
Copyright © 2011-2022 走看看